如何使用 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
如何为价格小于或等于和价格小于或等于范围在[=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