各ショップ内の商品数でショップのリストを注文しようとしています。所有権であるショップと商品の中間に参加しています。商品を店舗で並べ替える
どうやって注文するの周りにこのクエリを回すでしょうbelongs_to :product
belongs_to :shop
ownership.rb
shop.rb
has_many :ownerships
has_many :products, through: :ownerships
product.rb
has_many :ownerships
has_many :shops, through: :ownerships
:だから、私のモデルは次のようになりカウントによる製品?
@shops = Shop.all.includes(:products).where('products.id IS NOT NULL').references(:products).order(id :desc)
私のような.group('id').order('count(*) DESC')
のバリエーション試してみた:
@shops = Shop.all.includes(:products).where('products.id IS NOT NULL').references(:products).group(:id).order('count(*) DESC')
をしかし、私は、私が思うに、私のサイト上でそれを試してみました
ActiveRecord::StatementInvalid: PG::GroupingError: ERROR: column "products.id" must appear in the GROUP BY clause or be used in an aggregate function
[Rails 3の可能な重複](一致する件数順)(多対多)](https://stackoverflow.com/questions/16834399/rails-3-order-by-count-of-matches-many- to-many) – Genzume
上記は私に同じPG :: GroupingErrorを与えています。 'Shop.all.sort_by {| s | s.products.count} 'は実際には動作しますが、かなり遅いです。 – albaba
何を数えますか?ユニークな製品の数またはすべての製品の総在庫数、または特定の製品の数です。 – max