在 Rails 中设置自动更新的 has_many 关联

Setting up a has_many association in Rails that auto-updates

首先,很抱歉这个菜鸟问题。我正在将 Sinatra 应用程序迁移到 Rails,但遇到了一些困难,因为我是 Rails 方面的新手。

我有两个模型,用户和订单。我在模型中设置了一个 has_many & belongs_to 关联,并且在订单中添加了一个 user_id 关联列。

但我觉得用户也应该有某种关联列? (虽然我不确定如何设置)

具体来说,我希望能够查看订单,并判断客户之前是否订购过,例如:

<% @orders.each do |order| %>
<% if (order.user.orders > 1) %> Y<% end %>
<% end %>

但是,虽然我可以联系到用户,但我无法访问与他们关联的所有订单。我如何设置一个列来执行此操作,最好是在向他们分配新订单时自动更新?

这是 parent child 的情况。 User 是 parent,Order 是 child。 Parents 不存储外键,只存储 children。如果模型设置正确,用户应该有 has_many。那么你应该能够:

user.orders

只要新订单得到 user_id 正确存储,一切都应该正常工作。

你现在的模型就够了:

class Order < ActiveRecord::Base
  belongs_to :user # foreign_key user_id
end

class User < ActiveRecord::Base
  has_many :orders
end

您的查看代码:

<% @orders.each do |order| %>
  <% if order.user %>
    Y
  <% end %>
<% end %>

之前如果订单不属于用户,order.user为nil,所以如果不为nil,订单属于用户,且用户至少有1个订单!

否则,如果您想检查用户是否有任何订单,只需执行以下操作:

user.orders.count > 0