繁体   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