2009-06-06 69 views
2

我是RoR的新手 - 我有三個模型:Customer,JobNote。客戶有工作,而客戶和工作都可以有筆記。有沒有一種特殊的方式來處理這種類型的關係在Rails中,或者它會工作,如果我只是與Note有正常的belongs_to關係?如何在Rails中建模「可以屬於A或B」關係?

我關注是具有兩個customer_idjob_id但只有一個單一的一個領域將永遠不會用於單個記錄(即特定的注意事項可以指一個作業或客戶的筆記中的問題,但從來都),並且它不覺得好的數據庫設計有一半的時間空列。

我在想這個,還是有什麼不明白的東西?

回答

4

我建議使用多態關聯,因爲它更靈活,更易於實施。所需要的模型如下:

class Note < ActiveRecord::Base 
    belongs_to :notable, :polymorphic => true 
end 

class Customer < ActiveRecord::Base 
    has_many :notes, :as => :notable 
end 

class Job < ActiveRecord::Base 
    has_many :notes, :as => :notable 
end 

與移民

create_table :notes do |t| 
    t.references :notable, :polymorphic => {:default => 'Photo'} 
end 

有關多態關聯的細節,我建議google

+0

我會看看多態關聯;謝謝! – 2009-06-06 17:54:27

相關問題