我有带有相应表的消息和用户模型。
Messages 表具有 user_from 和 user_to 等字段。
如何关联模型以能够访问发件人和收件人用户对象:
message.user_from.name
message.user_to.id
...
谢谢。
我有带有相应表的消息和用户模型。
Messages 表具有 user_from 和 user_to 等字段。
如何关联模型以能够访问发件人和收件人用户对象:
message.user_from.name
message.user_to.id
...
谢谢。
您需要像这样更新您的消息模型:
belongs_to :user_from, :class_name => "User"
belongs_to :user_to, :class_name => "User"
这将在消息表下创建相应的字段,这些字段通过其 ID 链接到用户表。
如果您 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
我的情况的完整解决方案是:
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 不是用户表中的主键。