NewMonarch (owner)

Revisions

gist: 136140 Download_button fork
public
Public Clone URL: git://gist.github.com/136140.git
Embed All Files: show embed
console.rb #
1
2
3
4
5
6
7
> Product.best_sellers
'SELECT `products`.*, COUNT(*) AS total FROM `products` INNER JOIN order_items ON order_items.product_id = products.id INNER JOIN orders ON orders.id=order_items.order_id WHERE ((orders.payment_state=3) GROUP BY products.id ORDER BY total DESC'
# Yay!
 
> @store.products.best_sellers
'SELECT `products`.*, COUNT(*) AS total FROM `products` INNER JOIN order_items ON order_items.product_id = products.id INNER JOIN orders ON orders.id=order_items.order_id WHERE (`products`.store_id = 464) AND (orders.payment_state=3) GROUP BY products.id ORDER BY products.name ASC'
# Nooo!!!
product.rb #
1
2
3
4
5
6
7
8
9
10
11
class Product < ActiveRecord::Base
  belongs_to :store
 
  default_scope :order => "products.name ASC"
 
  named_scope :best_sellers, {:select => "`products`.*, COUNT(*) AS total",
       :conditions => "orders.payment_state=#{Order::PaymentState::APPROVED}",
       :group => "products.id",
       :joins => "INNER JOIN order_items ON order_items.product_id = products.id INNER JOIN orders ON orders.id=order_items.order_id",
       :order => "total DESC"}
end
store.rb #
1
2
3
class Store < ActiveRecord::Base
  has_many :products, :dependent => :destroy
end