Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/54.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 是否对ActiveRecord有条件的归属和关联?_Ruby On Rails_Activerecord - Fatal编程技术网

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