0
我試圖建模有以下限制圖像模型和頁面模型之間的關係:HAS_ONE:通過和的has_many:通過在同一個關聯
1 - 一個頁面能夠具有最大的一個圖像的(0圖像也是可以接受的)
2 - 圖像可以出現在許多頁面中。
這樣的關係,可以推測如下:
class Image < ActiveRecord :: Base
has_many :pages, :through :imageables
end
class Page < ActiveRecord :: Base
has_one :image, :through :imageables
end
class Imageable < ActiveRecord :: Base
belongs_to :image
belongs_to :page
end
一般此關聯或者與這兩個類圖像和頁面用的has_many存在:通過或兩者具有HAS_ONE:通過 是否有可能HAS_ONE之間混合:通過和has_many:通過在這種情況下? ActiveRecord的沒有提到這種特殊情況下
PS:我選擇使用的連接模型的方式,因爲我有可能具有相同的圖像以外的模型以及用不同的限制(的has_many而不是HAS_ONE)
謝謝您幫幫我!
您真的不應該爲此使用連接模型,無論它是否在其他地方使用。你的頁面應該有一個'image_id'和'belongs_to:image'。您可以在其他地方擁有多對多的關係,而無需在頁面類上強加聯接模型。 – meagar
那麼重點在於有很多模型與Page(Article,Memo,Comment ...)有相同的需求。所以我認爲這是一種更清晰的指定關係的方式,而不是爲所有模型運行遷移......這些是我個人的想法,但我在這裏要求從您的經驗中學習... – user3442206
@ user3442206 - 使用多態這些關係:http://guides.rubyonrails.org/association_basics.html#polymorphic-associations – BroiSatse