[英]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 %>
但是,盡管可以聯系到用戶,但我無法隨后訪問與之關聯的所有訂單。 我該如何設置一個列來執行此操作,最好是在為其分配新訂單時自動更新該列?
這是親子情況。 用戶是父母,訂單是孩子。 父母不存儲外鍵,僅存儲孩子。 如果您正確設置了模型,則用戶應具有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不屬於用戶,則order.user
為nil,因此如果不為order.user
,則order為用戶,並且user至少有1個訂單!
否則,如果您要檢查用戶是否有任何訂單,只需執行以下操作:
user.orders.count > 0
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.