私人消息系统的数据模型

时间:2009-04-18 13:04:27

标签: ruby-on-rails database-design web-applications migration private-messaging

我正在为我的网络应用编写一个私人消息系统。只需将其视为在典型的社交网站(如Facebook或Twitter)上发送PM,甚至通过Hotmail发送电子邮件。

I have come up with the following migration so far:
class CreateMessages < ActiveRecord::Migration
  def self.up
    create_table :messages do |t|
      t.integer :sender_id, :recipient_id
      t.string :title
      t.text :body
      t.boolean :read
      t.timestamps
    end
  end

  def self.down
    drop_table :messages
  end
end

但是,sender_id和recipient_id都引用相同的字段,即Role模型中的id字段。我必须做出哪些更改才能使解释器知道它指的是该字段。我还需要进行其他更改,例如连接表吗?

1 个答案:

答案 0 :(得分:1)

如果我正确地阅读了您的问题,您应该使用belongs_to的class_name选项在模型中进行更改:

belongs_to :sender, :class_name => 'Role', :foreign_key => 'sender_id'
belongs_to :recipient, :class_name => 'Role', :foreign_key => 'recipient_id'

我认为外键是推断的,所以你应该可以将它们保留下来。