【发布时间】:2010-08-03 04:19:52
【问题描述】:
我有两个类 Message 和 User。消息具有 user 的 sender_id 和 recipient_id 两个外键。如何建立关系,我将能够为发件人和收件人获取用户,例如 @message.sender.name 和 @message.recipient.name
我尝试过这样做:
class Message < ActiveRecord::Base
belongs_to :sender, :class_name => 'User', :foreign_key => 'sender'
belongs_to :recipient, :class_name => 'User', :foreign_key => 'recipient'
end
class User < ActiveRecord::Base
has_many :recivied_messages, :class_name => 'Message', :foreign_key => 'recipient'
has_many :send_messages, :class_name => 'Message', :foreign_key => 'sender'
end
但它没有帮助,例如,当我尝试访问 @message.recipient.name 时,它说“未定义的方法‘名称’”
【问题讨论】:
-
我认为您的解决方案是正确的。您确定上面的示例消息设置了
recipient_id字段吗?因为当它被设置并且对应的User不存在时你应该得到一个RecordNotFound异常。
标签: ruby-on-rails foreign-keys belongs-to has-one