Rails:使用表中的产品特定属性显示类似产品

时间:2014-04-04 18:36:27

标签: ruby-on-rails activerecord

我有一个产品型号:

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

1 个答案:

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