我正在建立一个电子商务网站。 每个产品都有许多产品详细信息,每个产品都是该产品的[尺寸,price_of_that_size,颜色等]。
在我的产品控制器上,我得到了:
def index
@products = Product.all
@categories = Category.all
end
事情在我的索引#view上我需要该产品的最低product_details价格,以便能够显示每种产品的起始价格。
在我的产品#show controller上我这样做是为了获取这些信息:
@retailprice = @product.product_details.order("retail_price ASC").first
但是在我的Product#index上我只有@ products.all,我已经在我的视图上迭代了。
调用
是不好的做法product.product_details.order("retail_price ASC").first
在我视图中的每次迭代?
我经常需要命令显示信息(asc / desc),但是当它在控制器中执行它不是很自然时我不知道把它放在哪里。
非常感谢任何建议。
答案 0 :(得分:1)
您可以使用has_many本身的选项指定裸集合的排序顺序:
class Product < ActiveRecord::Base
has_many : product_details, :order => 'retail_price ASC'
end
你也可以有两种关系,并按照你的要求使用它们:
class Product < ActiveRecord::Base
has_many :product_details
has_many :product_details_desc, :order => 'retail_price DESC'
has_many :product_details_asc, :order => 'retail_price ASC'
end