2016-07-14 4 views
0

私は4つのモデルレール4積極的なロード - 次の入れ子状の団体

class A < ActiveRecord::Base 
    has_many :Bs 
end 

class B < ActiveRecord::Base 
    belongs_to :A 
    has_many :Cs 
    has_many :Ds 
end 

class C < ActiveRecord::Base 
    belongs_to :B 
end 

class D < ActiveRecord::Base 
    belongs_to :B 
end 

を持って、私は熱心な負荷Aに必要な、すべてのネストされた関連付けを取得します。だからA:

eager_load(Bs: [:Cs, :Ds]).where('id=?',id).to_a 

私は熱心な読み込みでBレコードを注文したいと思います。私はこのような協会を通じて注文を追加しようとしました:

class A < ActiveRecord::Base 
    has_many :Bs, -> { order("id desc") } 
end 

しかし、それは動作しません。私が何かをするとき

A.first.bs 

Bレコードはid descで順序付けされていません。

これについてアドバイスをいただけますか?

ありがとうございました。

答えて

0

私はこれをテストしていませんが、あなたはIDまたはあなたが好きな他のフィールドでBsを注文するこれを行うことができます:

eager_load(Bs: [:Cs, :Ds]).where('id=?',id).order('Bs.id DESC')

他のオプションは、セットアップに上のデフォルトのスコープになりますモデルのように:

def self.default_scope 
    order(id: :desc) 
end 
関連する問題