0

我有带有相应表的消息和用户模型。
Messages 表具有 user_from 和 user_to 等字段。

如何关联模型以能够访问发件人和收件人用户对象:

message.user_from.name
message.user_to.id
...

谢谢。

4

3 回答 3

2

您需要像这样更新您的消息模型:

belongs_to :user_from, :class_name => "User"
belongs_to :user_to, :class_name => "User"

这将在消息表下创建相应的字段,这些字段通过其 ID 链接到用户表。

于 2012-06-18T10:32:16.087 回答
1

如果您 db 将用户 ID 作为外键存储在消息表中,则不能为关联使用相同的名称。但你可以说:

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
于 2012-06-18T10:38:17.873 回答
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 不是用户表中的主键。

于 2012-06-22T19:44:39.367 回答