2016-03-31 7 views
0

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 

私はJarの番号順にFooのリストが欲しいです。例について

、各FooオブジェクトFooオブジェクト

[f1, f2, f3] 

のアレイを検討

Jarオブジェクトの次の番号を含むF1 => 1瓶は

F2 => 5ジャーオブジェクトオブジェクト

f3 => 2 Jarオブジェクト

所望の順序がJarモデルにwhere句書き込むに

[f2, f3, f1] 

答えて

2
Foo.joins(bars: {cars: :jars}).group('foo.id, jars.id').order('COUNT(jars.id)') 

ある:{車:

Foo.joins(bars: {cars: :jars}).where(jars: {name: 'I am jar'}) 
+0

それはいくつかの修正を必要とし、それは '(バーを接合でなければなりません::jars})。グループ( 'foos.id、jars.id') '。また、jarモデル –

+0

@RohitJangidのwhere節を書くためのソリューションを追加できれば、 'jars'テーブルをクエリするためのフォームを編集して追加することもできます –

関連する問題