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