首先,对不起的问题抱歉。我正在将一个Sinatra应用程序迁移到Rails,并且遇到一些困难,因为我是Rails方面的新手。
我有两个型号,用户和订单。我已经设置了一个has_many&在模型中的belongs_to关联,我在订单中添加了一个user_id关联列。
但是我觉得用户也应该有某种关联列呢? (虽然我不知道如何设置它)
具体来说,我希望能够查看订单,并告诉客户之前是否已经订购过:
<% @orders.each do |order| %>
<% if (order.user.orders > 1) %> Y<% end %>
<% end %>
但是当我可以联系到用户时,我无法访问他们所关联的所有订单。如何设置列来执行此操作,最好在为其分配新订单时自动更新?
答案 0 :(得分:1)
这是父母的情况。用户是父,订单是孩子。父母不存储外键,只存储子女。如果您正确设置了模型,则User应具有has_many。然后你应该能够:
user.orders
只要新订单正确存储了user_id,所有这些都应该正常工作。
答案 1 :(得分:1)
现在你的模型就足够了:
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,则订单属于用户,且用户至少有1个订单!
否则,如果您想检查用户是否有任何订单,请执行以下操作:
user.orders.count > 0