基本Rails 3问题:如何对产品进行排序?

Mis*_*hko 2 ruby-on-rails sql-order-by ruby-on-rails-3

我有以下型号:

Product: name, shop_id (foreign key), brand_id (foreign key), price
Shop:    name
Brand:   name
Run Code Online (Sandbox Code Playgroud)

协会是:

Product: belongs_to :shop
         belongs_to :brand
Shop:    has_many   :products
         has_many   :brands,   :through => :products
Brand:   has_many   :products
         has_many   :shops,    :through => :products
Run Code Online (Sandbox Code Playgroud)

ProductsController#list我想获得按商店名称排序的所有产品列表,然后按品牌名称排序.

我试着这样做:

@products = Product.order("products.shop.name ASC, products.brand.name ASC")
Run Code Online (Sandbox Code Playgroud)

但它不起作用(我想因为products.shop.name在数据库级别不存在).

这样做的正确方法是什么?

iai*_*ain 16

奥斯汀L是对的,但他的语法有点陈旧.新的ActiveRecord语法更清晰:

@products = Product.includes(:shop, :brand).order("shops.name ASC, brands.name ASC")
Run Code Online (Sandbox Code Playgroud)