簡體   English   中英

是否有ActiveRecord的條件belongs_to和has_one關聯?

[英]Have conditional belongs_to and has_one associations for ActiveRecord?

假設我有一個模型A ,它可以屬於模型B和模型C 模型B可以屬於模型C 我希望A的實例引用BC如果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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM