为什么我不能通过关联访问枚举方法?
Why can't i access enum method through association?
我对 RoR 有点陌生,我遇到了一个愚蠢的问题(我认为)。我有两个模型——产品和订单。订购 belongs_to 产品和产品 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 %>
但我不断收到:
undefined method `in_progress?' for nil:NilClass
我无法通过产品关联访问订单?
当 t 行 product.order.in_progress?
引发 undefined method 'in_progress?' for nil:NilClass
时,这意味着 product.order
必须 return 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
真的有道理吗,每个产品只能带一次吗?
我对 RoR 有点陌生,我遇到了一个愚蠢的问题(我认为)。我有两个模型——产品和订单。订购 belongs_to 产品和产品 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 %>
但我不断收到:
undefined method `in_progress?' for nil:NilClass
我无法通过产品关联访问订单?
当 t 行 product.order.in_progress?
引发 undefined method 'in_progress?' for nil:NilClass
时,这意味着 product.order
必须 return 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
真的有道理吗,每个产品只能带一次吗?