[英]Have conditional belongs_to and has_one associations for ActiveRecord?
假設我有一個模型A
,它可以屬於模型B
和模型C
模型B
可以屬於模型C
我希望A
的實例引用B
的C
如果B
存在),否則引用它自己的C
所以我有點想要(對於A
)
belongs_to :B, optional: true
belongs_to :C
has_one :C, through: :B
但我希望C
的關聯取決於B
的存在。 我該如何實現?
注意:我也希望查詢對A
有效,因此A.all.includes(:C)
應該可以工作。
我將使用多態關聯,因此模型A
具有B
(association_type:“ B”和association_id:...)或C
(association_type:“ C”和association_id:...)。
在此之后,您唯一真正遇到的問題是如何處理A.includes(:C)。 我們可以考慮一種寫一些自定義解決方案來替代這種行為的方法。 無論如何, includes
將執行附加查詢。
如果您認為這種方法對您有用,那么我將考慮一些自定義解決方案並分享我的想法。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.