[英]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.