我有一个产品型号:
ID-- NAME-- product_code
1 --name1 --- axdf
2-- name2 --- ddfg
3 --name3 --- gghh
在我的产品1显示页面中,我想显示另一个显示具有相同product_code的类似产品的部分。如何显示具有相同product_code的类似产品?
我是否在产品控制器中创建了一个方法,例如:
def similar_products
@similar_product.code= @product.product_code
end
或模型中的范围
scope :similar_products, where :product_code= true
答案 0 :(得分:1)
在模型scope
中添加Product
:
class Product < ActiveRecord::Base
#...
scope :similar_products, ->(product) { where("id != ? and product_code = ?", product.id, product.product_code) }
#...
end
此范围similar_products
将从products表中获取所有记录,但不包括传递的产品对象,该产品对象具有与传递的产品对象相同的product_code。
访问scoped
中的ProductsController#show
方法,以获取类似产品的列表:
class ProductsController < ApplicationController
# ...
def show
@product = Product.find(params[:id])
@similar_products = Product.similar_products(@product)
end
#...
end