2016-03-31 20 views
0

PostgreSQL veritabanından aşağıdaki modelleri göz önünde bulundurun.Verileri, dolaylı eşlenen verilere göre sıraladıktan sonra alın.

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 

Ben Jar sayısının sırasına göre Foo listesini istiyorum. , Foo nesneler

[f1, f2, f3] 

Her Foo amacı bir dizi göz önünde, Örnek için

Jar nesne

sayısının takip içeren

f1 => 1 Kavanoz

f2 => 5 Jar nesneleri nesneler

f3 => 2 Nesneleri nesnelere ekle

sonra istenen düzen Jar modeline bir yerde maddesini yazmak için

[f2, f3, f1] 

cevap

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

şöyledir: {arabalar:

Bu birkaç düzeltme ihtiyacı
Foo.joins(bars: {cars: :jars}).where(jars: {name: 'I am jar'}) 
+0

, olması gerektiği '(çubukları katıldı :: kavanozlar}). grup ('foos.id, jars.id') '. –

+0

@RohitJangid'in jar modelinin nerede yazılacağını yazmak için bir çözüm ekleyebilirseniz ve 'jar' tablosunu sorgulamak için bir form eklediyseniz harika olur –

İlgili konular