ruby-on-rails - 如何使用 Ruby on Rails 进行具有二值范围和作用域的查询?

标签 ruby-on-rails ruby

我试图在 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/

相关文章:

ruby-on-rails - Prawn PDF压缩,压缩内容流,它是做什么的

ruby-on-rails - Rails - 为什么在 sign_in 方法中使用 self.current_user = user

ruby-on-rails - 为了测试我的 Ruby on Rails 应用程序,您有什么建议?

ruby-on-rails - 在一次迁移中创建(删除)多个表

ruby-on-rails - 创建不带参数 params 的新 Ruby 字符串助手

javascript - 从 Javascript 调用 Rails Action

javascript - 如何将我的 current_user.id 传递给 AngularJs Controller

ruby - 为什么命令 `gem list` 不包括使用 bundler :git option? 安装的 gem

ruby-on-rails - 如何在 Rails 测试中指定 POST 参数?

mysql - Ruby on Rails ActiveRecord::ConnectionNotEstablished