我有消息和用户模型以及相应的表格 Messages表包含user_from和user_to等字段。
如何关联模型以便能够访问发件人和收件人用户对象:
message.user_from.name
message.user_to.id
...
感谢。
答案 0 :(得分:2)
您需要像这样更新您的消息模型:
belongs_to :user_from, :class_name => "User"
belongs_to :user_to, :class_name => "User"
这将在按摩表下创建相应的字段,通过其ID链接到User表。
答案 1 :(得分:1)
如果db将用户ID存储为messages表中的外键,则不能对关联使用相同的名称。但你可以说:
class Message
belongs_to :from, class: 'User', foreign_key: :user_from
belongs_to :to, class: 'User', foreign_key: :user_from
end
在rails中,最好使用<assiciation_name>_id
作为外键列名,然后就可以使用了
class Message
belongs_to :user_from, class: 'User' # foreign_key: :user_from_id by default
belongs_to :user_to, class: 'User' # foreign_key: :user_to_id by default
end
答案 2 :(得分:0)
我的案例的完整解决方案是:
belongs_to :sender,
:class_name => "User",
:foreign_key => "sender_id",
**:primary_key => "uid"**
belongs_to :recipient,
:class_name => "User",
:foreign_key => "recipient_uid",
**:primary_key => "uid"**
因为用户ID不是User表中的主键。