在PostgreSQL
数据库上考虑以下模型。
class Foo < ActiveRecord::Base
has_many :bars
end
class Bar < ActiveRecord::Base
has_many :cars
belongs_to :foo
end
class Car < ActiveRecord::Base
has_many :jars
belongs_to :bar
end
class Jar < ActiveRecord::Base
belongs_to :car
end
我希望按Foo
的数量顺序列出Jar
。
例如,考虑一组Foo
个对象
[f1, f2, f3]
每个Foo
对象包含以下数量的Jar
个对象
f1 =&gt; 1个Jar对象
f2 =&gt; 5 Jar对象
f3 =&gt; 2个Jar对象
然后所需的顺序是
[f2, f3, f1]
答案 0 :(得分:2)
Foo.joins(bars: {cars: :jars}).group('foo.id, jars.id').order('COUNT(jars.id)')
在Jar
模型上写一个where子句:
Foo.joins(bars: {cars: :jars}).where(jars: {name: 'I am jar'})