簡體   English   中英

在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 %>

但是,盡管可以聯系到用戶,但我無法隨后訪問與之關聯的所有訂單。 我該如何設置一個列來執行此操作,最好是在為其分配新訂單時自動更新該列?

這是親子情況。 用戶是父母,訂單是孩子。 父母不存儲外鍵,僅存儲孩子。 如果您正確設置了模型,則用戶應具有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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM