如何解决为什么我不能通过关联访问枚举方法?
我对RoR有点陌生,我陷入了一个愚蠢的问题(我认为)。我有两个模型-产品和订单。订单属于产品,产品has_one订单。
在我的订单模型中,我具有以下枚举:enum situation: { in_progress: 0,finished: 10 }
我在控制器中拥有(我已获得登录用户注册的产品的集合)
@user = current_user
@products = @user.products
然后,在我看来,我通过@products与我互动,我想检查特定产品的订单状态:
> <% @products.each do |product| %>
> <% if product.order.in_progress? %>
> do x
> <% else %>
> do y
> <% end %>
> <% end %>
但是我不断得到:
未定义的方法“正在进行中?”为nil:NilClass
我无法通过产品关联访问订单吗?
解决方法
当t行product.order.in_progress?
引发undefined method 'in_progress?' for nil:NilClass
时,这意味着product.order
必须返回nil
。您的数据库中至少有一个product
尚无订单,因此您需要在视图中进行处理。
我将从以下内容开始:
<% @products.each do |product| %>
<% if product.order.blank? %>
# no order yet
<% elsif product.order.in_progress? %>
do x
<% else %>
do y
<% end %>
<% end %>
product has_one order
确实有意义,每个产品只能带一次吗?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。