ruby-on-rails - 在 Rails ActiveRecord 查询中有条件地链接 where 子句

标签 ruby-on-rails ruby rails-activerecord

我有一个表单,当填写时必须触发特定查询,具体取决于表单具有的参数,所以我在我的模型中有一个方法,我认为应该如下所示:

def form_query(params)

  query = ''
  if params.has_key?('size')
    query = query.where(size: params['size'])
  end

  if params.has_key?('title')
    query = query.where(title: params['title'])
  end

  # More conditionals depending on params.
end

我的问题是,query 的开头必须是什么?我输入了 query = '',但我想知道什么是基本情况,所以我可以有条件地添加更多“where”子句。

最佳答案

查询不是字符串;他们是查询对象。所以你想要类似的东西

query = YourModel.scoped # Rails 3; in Rails 4, use .all
if params.has_key?('size')
  query = query.where(size: params['size'])
end

等等

关于ruby-on-rails - 在 Rails ActiveRecord 查询中有条件地链接 where 子句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23398685/

相关文章:

mysql - 离线同步(Performance UUID为主键)

ruby-on-rails - 错误消息 : Make sure that `gem install debug_inspector -v ' 0. 0。2'` 捆绑前成功

ruby-on-rails - 在 Unix 上,查找执行该程序的用户是否为 root?

ruby-on-rails - 是否有 ruby​​/rails gem 可以轻松确定日期范围

ruby - block 注释的精确规范

ruby-on-rails - 服务到服务认证、服务身份和访问权限管理

ruby-on-rails - CanCan - "user"参数为 nil - Rails 4

ruby-on-rails - Rails 范围为 null 或为空?

ruby-on-rails - Ruby on Rails - 显示相关表中的字段

ruby-on-rails - ActiveRecord 不缺常数 Base!将 rails 3.2.9 jruby 1.7.2 部署到 weblogic 10.3 时出错