2011-03-10 65 views
1

在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为我管理用户标识,这样我就不必自己创建整型字段。

+0

正如抬起头:'send'是在元编程方法Ruby,所以如果可行的话,你可能想避免使用这个词。 – 2011-03-10 22:35:15

+0

嘿安德鲁!我知道,但我认为在交换消息的情况下,使用'send'不会提示任何元编程。 – Geo 2011-03-13 15:47:45

回答

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' 
+0

我实际上将列名为from_id和to_id,但这是我如何编程它。 – 2011-03-10 13:44:03

+0

是的,那是标准方式 – Ashish 2011-03-10 14:05:37

+0

谢谢Ashish,这个作品非常好。你能告诉我这些数据库会调用什么类型的数据?我想完全理解这一点。 – Geo 2011-03-13 15:46:17

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

+0

所以我不得不像我在帖子中写的那样生成我的模型? – Geo 2011-03-10 11:30:39

相关问题