упорядочить товары по количеству ассоциаций - PullRequest
0 голосов
/ 19 ноября 2009

Класс Распродажа

belongs_to :product, :accessible => true
belongs_to :brand, :accessible => true

end

Class Product

has_many :sales
belongs_to :brand

end

Class Brands

has_many :products
  has_many :sales

end

Как мне узнать, какие бренды продаются чаще всего?

1 Ответ

1 голос
/ 19 ноября 2009

Если вы хотите остаться с activerecord, вы можете использовать Вычисления , но для этого потребуется 2 запроса:

>> brands = Sale.count(:id, :include => :brand, :group=> 'sales.brand_id', :limit => 5)
  SQL (0.7ms)   SELECT count(DISTINCT `sales`.id) AS count_id, sales.brand_id AS sales_brand_id FROM `sales` LEFT OUTER JOIN `brands` ON `brands`.id = `sales`.brand_id GROUP BY sales.brand_id LIMIT 5
=> #<OrderedHash {967032312=>3, 1392881137=>1}>

>> brands_with_most_sales = Brand.find(brands.keys)
  Brand Load (0.5ms)   SELECT * FROM `brands` WHERE (`brands`.`id` = 967032312) 
=> [#<Brand id: 967032312, title: "brand-x", created_at: "2009-11-19 02:46:48", updated_at: "2009-11-19 02:46:48">]

В противном случае вы можете написать собственный запрос, используя find_by_SQL

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...