私は2つのモデルを持っています:
jacket.rb:
has_many :button
belongs_to :store
ボタン.rb:
belongs_to :jacket
私のストアコントローラーでは、 @store.jackets.order(buttons: :desc) を実行できるようにしたいのですが、db 列ではないため実行できません。どうすればいいですか?
私は2つのモデルを持っています:
jacket.rb:
has_many :button
belongs_to :store
ボタン.rb:
belongs_to :jacket
私のストアコントローラーでは、 @store.jackets.order(buttons: :desc) を実行できるようにしたいのですが、db 列ではないため実行できません。どうすればいいですか?
関連付けをカウントし、カウントを名前にエイリアスし、その名前で並べ替えるには、いくつかの SQL を記述する必要があります。
@store.jackets.joins(:buttons).select("jackets.*, COUNT(buttons.id) as button_total").order('button_total DESC')
SQL カウントの詳細はこちら