我有消息和用户模型与相应的表。
Messages表具有像user_from和user_to这样的字段。Rails3活动记录协会
如何模型关联到能够访问发件人和收件人的用户对象:
message.user_from.name
message.user_to.id
...
感谢。
我有消息和用户模型与相应的表。
Messages表具有像user_from和user_to这样的字段。Rails3活动记录协会
如何模型关联到能够访问发件人和收件人的用户对象:
message.user_from.name
message.user_to.id
...
感谢。
我的情况下,完整的解决方案是:
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"**
因为用户标识不是用户表中的主键。
你需要更新你的消息模型是这样的:
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
在轨
,它是使用<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我猜。如果存储外键的表列也被称为user_from和user_to,它仍然不起作用。 –
感谢您的回答。 这实际上是我做的,它不起作用。但我认为它是正确的解决方案,我的代码或数据库中还有其他一些错误。 我在我的开发机器上使用SQLight。我应该定义外键来实现这个功能吗? – Savash