为什么我不能通过关联访问枚举方法?

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真的有道理吗,每个产品只能带一次吗?