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
我正在从头开始构建一个电子商务网站。 每个产品都有许多产品详细信息,每个 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