Ruby on rails 是否对ActiveRecord有条件的归属和关联?
假设我有一个模型Ruby on rails 是否对ActiveRecord有条件的归属和关联?,ruby-on-rails,activerecord,Ruby On Rails,Activerecord,假设我有一个模型a,它可以属于模型B和模型C。模型B可以属于模型C。我希望A的实例引用B的C如果B存在,则引用它自己的C 所以我有点想要(对于A) 但是我希望C的关联依赖于B的存在。我如何做到这一点 注意:我还希望我的查询对A有效,因此A.all.includes(:C)应该可以工作。我会选择多态关联,因此模型A要么有B(关联类型:'B'和关联id:…)要么有C(关联类型:'C'和关联id:…) 在这之后,唯一真正的问题是如何处理A.includes(:C)。我们可以考虑写一些定制的解决方案来代
a
,它可以属于模型B
和模型C
。模型B
可以属于模型C
。我希望A
的实例引用B
的C
如果B
存在,则引用它自己的C
所以我有点想要(对于A
)
但是我希望C
的关联依赖于B
的存在。我如何做到这一点
注意:我还希望我的查询对
A
有效,因此A.all.includes(:C)
应该可以工作。我会选择多态关联,因此模型A
要么有B
(关联类型:'B'和关联id:…)要么有C
(关联类型:'C'和关联id:…)
在这之后,唯一真正的问题是如何处理A.includes(:C)。我们可以考虑写一些定制的解决方案来代替这种行为。无论如何,includes
将执行附加查询
如果你认为这种方法对你有用,我会考虑一些定制的解决方案并分享我的想法。我会选择多态关联,因此模型
A
要么有B
(关联类型:'B'和关联id:…)要么有C
(关联类型:'C'和关联id:…)
在这之后,唯一真正的问题是如何处理A.includes(:C)。我们可以考虑写一些定制的解决方案来代替这种行为。无论如何,includes
将执行附加查询
如果您认为这种方法对您有用,我将考虑一些定制解决方案并分享我的想法。是否有可能,您需要
a
同时指定B
和C
关联?@AntonTkachov No,我不这么认为。我不清楚为什么你有一个既属于C又属于C的和一个属于
C。你能澄清一下你想要达到的层次结构吗?这有点帮助。我将与大家分享我的想法。有没有可能,您需要a
同时指定B
和C
关联?@AntonTkachov No,我不这么认为。我不清楚为什么你有一个既属于C又属于C的和一个属于
C。你能澄清一下你想要达到的层次结构吗?这有点帮助。我将分享我的想法作为回应
belongs_to :B, optional: true
belongs_to :C
has_one :C, through: :B