在Rails应用程序中,我想允许用户将消息从一个发送到另一个。所以,我有一个用户模型:
has_many :messages
我认为Message
模型将包含from
字段,其中包含发送它的用户的ID,以及to
字段,其中包含用户的用户ID这是为了解决这个问题。 Messsage模型的最佳实践是什么?我应该像这样生成它:
rails g model Message from:integer to:integer title:string content:text
我如何将其与用户相关联?我应该将其与2个用户关联,因为from
和to
字段会引用现有用户吗?我怎么代表这种关系?我会在消息模型中写什么样的关系? belongs_to :user
?
我觉得应该有办法让Rails为我管理用户ID,这样我就不必自己创建整数字段了。
答案 0 :(得分:6)
User
has_many :sent_messages, :class_name => "Message", :foreign_key => 'from'
has_many :received_messages, :class_name => "Message", :foreign_key => 'to'
Message
belongs_to :sender, :class_name => 'User', :foreign_key => 'from'
belongs_to :receiver, :class_name => 'User' :foreign_key => 'to'
答案 1 :(得分:2)
如果你想要两者,你应该做这样的事情
has_many :sent_messages, :class_name => 'Message', :foreign_key => 'from'
has_many :received_messages, :class_name => 'Message', :foreign_key => 'to'