如何使用 using scope 编写活动记录

How to write active record using using scope

如何为价格小于或等于价格小于或等于范围在[=32中写入活动记录=]?

我这样试过:

scope :price, -> (price_lteq_or_price_gteq) { where("price_paisas >= ? or price_paisas <= ?", price_lteq_or_price_gteq, price_lteq_or_price_gteq)}

控制器

def index
  @properties = Property.where(:status=>'1')
  @properties = @properties.status(params[:status]) if params[:status].present?
  @properties = @properties.price(params[:price_lteq]) if params[:price_lteq].present?
  @properties = @properties.price(params[:price_gteq]) if params[:price_gteq].present?
end

当我这样尝试时,我得到了这样的查询:

SELECT `properties`.* FROM `properties` WHERE
`properties`.`status` = '1' AND (price_paisas >= '000' or price_paisas <= '000')
AND (price_paisas >= '49900' or price_paisas <= '49900')

我需要的是这样的活动记录

SELECT `properties`.* FROM `properties` WHERE
`properties`.`status` = '1' AND
(price_paisas >= '000' and price_paisas <='49900')

如何操作?

试试这个

范围:

price_gteq = 0, price_lteq= 49900

scope :price, -> (price_lteq, price_gteq) { where("price_paisas >= ? or price_paisas <= ?", price_gteq, price_lteq)}

控制器:

def index
 @properties = Property.where(:status=>'1')
 @properties = @properties.status(params[:status]) if params[:status].present?
 @properties = @properties.price(params[:price_lteq],params[:price_gteq]) if params[:price_lteq] && params[:price_gteq] 
end