[英]Rails 4 - how to use “belongs_to” on the same model twice (once with using “foreign_key”)?
我有一個模型Message
:
class Message < ActiveRecord::Base
belongs_to ...
belongs_to ...
belongs_to :user
belongs_to :user, class_name: "User", foreign_key: "accepted_denied_by_user_id"
end
使用此設置,如果我打電話:
message.user.email
我收到了接受郵件但未發送郵件的用戶的電子郵件。
如果我刪除此行:
belongs_to :user, class_name: "User", foreign_key: "accepted_denied_by_user_id"
並致電:
message.user.email
我收到發送該消息的用戶的電子郵件。
如何獲得發件人和收件人的電子郵件?
我試過了
message.accepted_denied_by_user.email
但這導致
undefined method `accepted_denied_by_user' for ...
謝謝。
應該是這樣的:
belongs_to :user
belongs_to :accepted_denied_by_user, class_name: "User", foreign_key: "accepted_denied_by_user_id"
現在,對於特定情況,您應該能夠同時調用message.user.email
和message.accepted_denied_by_user.email
。
您需要使用不同的名稱來命名第二個關聯:
belongs_to :denied_user, class_name: "User", foreign_key: "accepted_denied_by_user_id"
然后您將能夠獲得以下信息:
message.denied_user.email
您不應該給兩個(或多個)關聯使用相同的名稱。
當您執行belongs_to :user
它會自動查找User
模型。 但是,當您要再次將其關聯時-只需為其提供其他名稱,然后指定class_name: "User"
-因此其仍在User
模型中查找,但與您指定的foreign_key
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.