0

我正在为我的网络应用程序编写一个私人消息系统。只需将其视为与在 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和receiver_id都指向同一个字段,也就是Role模型中的id字段。我必须进行哪些更改才能使解释器知道它指的是该字段。我是否需要进行其他更改,例如连接表?

4

1 回答 1

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'

不过,我认为外键是推断出来的,因此您应该可以将其关闭。

于 2009-04-18T22:05:45.133 回答