2011-05-27 65 views
3

我有2個主要實體UserProfile和Property。基本上,用戶配置需要維持3名不同的屬性列表(注意,每個列表類型將有額外屬性)HABTM最佳實踐

有誰看到什麼毛病以下設計這樣做:

class UserProfile < ActiveRecord::Base 
    has_many :shortlists 
    has_many :booklists 
    has_many :proplists 
end 

class Shortlist < ActiveRecord::Base 
    has_and_belongs_to_many :properties 
end 

class Booklist < ActiveRecord::Base 
    has_and_belongs_to_many :properties 
end 

class Proplist < ActiveRecord::Base 
    has_and_belongs_to_many :properties 
end 

class Property < ActiveRecord::Base 
    has_and_belongs_to_many :shortlists 
    has_and_belongs_to_many :booklists 
    has_and_belongs_to_many :proplists 
end 

另一種方法我正在考慮的是使用多態性的財產實體, ,但不知道哪種方式會更'軌道'

+1

'導軌方式'的關鍵之一是避免重複自己。您應該使用多態性來將這些列表合併爲List類的後代。 – Mario 2011-05-27 15:36:55

+1

請注意,has_and_belongs_to_many將被棄用,並用has_many,:through – apneadiving 2011-05-27 15:37:55

回答