我有一個類的層次,但不是單表繼承。ActiveRecord模型的繼承和多態性
ThrowAway < ActiveRecord::Base
和
Junk < ThrowAway
的問題是,所有ThrowAway
對象都有一個Location
引用。一個Location
belongs_to :throw_away, :polymprohic => true
的問題是,如果我定義
ThrowAway < ActiveRecord::Base
has_many :locations, :as => :throw_away
end
那麼,即使垃圾從它繼承並定義了不同的表名,throw_away_type
列將始終設置爲ThrowAway
在哪裏實際上想要它設置爲Junk
。
現在會有很多這些小類,所以會有Stuff < ThrowAway
Rags < ThrowAway
等我希望他們都有一個Location
沒有定義每個單獨的類中的位置關係。
這是可能的鐵軌?問題是,不僅僅是位置,還有其他的這種關係,我寧願在這裏跟隨一些DRY。我假設我需要創建一個生成器方法,它將在當前對象上執行並在運行時生成這些關係生成器。
謝謝。