0
我有模型A,B,C,D。一个模型有多个记录的B,B的C和C的D. D如何在下面搜索多个模型的记录?
我想知道是否有什么办法可以从A到D以比从A到B更清洁的方式...递归到D,制作庞大而沉重的代码。
我在想,如果它可能写出像
aa = A.something
if aa.bs.cs.ds.where(:status=>1).any?
...
我不知道这更好的,所以也许误导...
我有模型A,B,C,D。一个模型有多个记录的B,B的C和C的D. D如何在下面搜索多个模型的记录?
我想知道是否有什么办法可以从A到D以比从A到B更清洁的方式...递归到D,制作庞大而沉重的代码。
我在想,如果它可能写出像
aa = A.something
if aa.bs.cs.ds.where(:status=>1).any?
...
我不知道这更好的,所以也许误导...
当然,使用怎样的标题有一对多透:
class A < ActiveRecord::Base
has_many :bs
has_many :cs, :through => :bs
has_many :ds, :through => :cs
end
class B < ActiveRecord::Base
belongs_to :a
has_many :cs
end
class C < ActiveRecord::Base
belongs_to :b
has_many :ds
end
class D < ActiveRecord::Base
belongs_to :c
end
现在,你可以通过调用得到所有ds
的一个a
(每个d
的状态过滤):
a.ds.where(status: 1)
你可以叫exist?
或任何查询API调用的,你会在任何ActiveRelation对象。请注意,所有这些都假设您正在尝试使用与单个a
记录相关的ds
。如果您正在处理一组a
记录(例如范围内的ActiveRelation),则需要采取稍微不同的方法来获取结果 - 如果这是您需要的,请告诉我。
它是exacly,谢谢。 –