如何为价格小于或等于和价格小于或等于ruby中的范围编写有效记录。
我试过这样。
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')
怎么做。 请帮忙。任何帮助都很明显。
答案 0 :(得分:1)
试试这个
<强>范围:强>
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