Rails:视图内的数据库调用

时间:2015-04-17 14:48:53

标签: ruby-on-rails database activerecord view

我正在建立一个电子商务网站。 每个产品都有许多产品详细信息,每个产品都是该产品的[尺寸,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),但是当它在控制器中执行它不是很自然时我不知道把它放在哪里。

非常感谢任何建议。

1 个答案:

答案 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