Rails : 视图内的数据库调用

Rails : Database call inside a view

我正在从头开始构建一个电子商务网站。 每个产品都有许多产品详细信息,每个 product_detail 是该产品的 [尺寸、price_of_that_size、颜色等]。

在我的产品控制器上,我得到了:

def index
  @products = Product.all
  @categories = Category.all
end

这东西在我的索引上#view 我需要该产品的最低 product_detail 价格,以便能够显示每个产品的起始价格。

在我的产品#show 控制器上,我这样做是为了获取该信息:

@retailprice = @product.product_details.order("retail_price ASC").first

但是在我的 Product#index 上,我只有 @products.all,我已经在上面迭代了我的观点。

调用

是不好的做法吗
product.product_details.order("retail_price ASC").first 

在我看来每次迭代?

我经常需要命令来显示信息(asc / desc ),但是当在控制器中做这件事不是很自然时,我不知道该把它放在哪里。

如有任何建议,我们将不胜感激。

您可以使用 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