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.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
。
我有一个模型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
。