我试图在 Rails 中获取两个值之间的结果。我在模型中使用范围。我的模型如下所示:
# Model ad.rb
scope :min_price, -> (number) { "ads.price = #{number}%" }
scope :max_price, -> (number) { "ads.price = #{number}%" }
这是我的 Controller
# Controller ads_controller.rb
def index
@ads = Ad.where((min_price(params[:min_price]))..(max_price(params[:max_price]))).order("created_at DESC") if params[:min_price].present? if params[:max_price].present?
end
这是行不通的。什么是正确的方法?
最佳答案
一起使用它们时应该将它们结合起来,否则会一个覆盖另一个(取决于您在查询中如何调用它们)。
class Ad
scope :min_max_price ->(min,max) { where('price > ? AND price < ?', min, max) }
end
关于ruby-on-rails - 如何使用 Ruby on Rails 进行具有二值范围和作用域的查询?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28097197/