簡體   English   中英

Rails 4-如何在同一模型上兩次使用“ belongs_to”(一次使用“ foreign_key”)?

[英]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.emailmessage.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.

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