групповые записи и получить размер каждой группы в рельсах - PullRequest
2 голосов
/ 27 января 2012

Привет, у меня есть таблица Sold Products, в которой хранится информация о покупке продукта и схемы:

id |username | product_id| timestamp

У меня есть другой продукт таблицы, схема которого

id | product_name | description 

Я хочучтобы получить самые продаваемые продукты.Как включить это в активную запись? Пожалуйста, помогите.

1 Ответ

1 голос
/ 27 января 2012

Два способа сделать это ... первый из них проще и эффективнее второго:

Метод 1: использовать кеш счетчика

class SoldProduct < ActiveRecord::Base
  belongs_to :product, :counter_cache => true
end

Затем вы добавляете атрибут sold_products_count в таблицу Product и находите их, используя это:

Product.find(:all, :order => 'sold_products_count')

Метод 2: Делайте это на основе SQL

sales_count = Product.joins(:sold_products).count(:group=>"sold_products.product_id").sort_by{|product, sales| sales}.reverse
sales_count.each {|product, sales| puts "Product #{product} has #{sales} sales"}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...