0

我正在爲我的web應用程序編寫一個私人消息系統。試想一下,像在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字段。我必須做出什麼樣的改變,所以解釋者知道這是指該領域。是否還有其他更改,例如連接表?

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

我覺得外鍵推斷,雖然如此,你應該能夠:

+1

請將您的代碼放入格式化的代碼塊中。這會讓人們更容易閱讀和理解你的問題。 (突出顯示您的代碼並鍵入Ctrl-K) – 2009-04-18 15:26:44

回答

1

如果我正確地讀你的問題,你應該使用belongs_to的該CLASS_NAME選項使模型中的變化讓他們離開。

+0

belongs_to上的默認外鍵是association_name_id,所以它會在您的示例中猜出sender_id和recipient_id。 – 2009-04-18 22:26:04

+0

應該將外鍵替換爲「role_id」嗎?我希望它被命名爲sender_id,但我如何確定sender_id實際上是指role_id? – alamodey 2009-04-19 03:09:01