该模型应该如何设计?

时间:2011-03-10 11:14:00

标签: ruby-on-rails ruby activerecord

在Rails应用程序中,我想允许用户将消息从一个发送到另一个。所以,我有一个用户模型:

has_many :messages

我认为Message模型将包含from字段,其中包含发送它的用户的ID,以及to字段,其中包含用户的用户ID这是为了解决这个问题。 Messsage模型的最佳实践是什么?我应该像这样生成它:

rails g model Message from:integer to:integer title:string content:text

我如何将其与用户相关联?我应该将其与2个用户关联,因为fromto字段会引用现有用户吗?我怎么代表这种关系?我会在消息模型中写什么样的关系? belongs_to :user

我觉得应该有办法让Rails为我管理用户ID,这样我就不必自己创建整数字段了。

2 个答案:

答案 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'

这与此问题类似:Rails Model has_many with multiple foreign_keys