有条件地链接Rails ActiveRecord查询中的where子句

霍默·史密斯

我有一个表单,该表单在填充时必须触发特定的查询,具体取决于表单具有的参数,因此我在模型中有一个方法,我相信它应该看起来像这样:

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”子句。

戴夫·斯威斯古斯(Dave Schweisguth)

查询不是字符串。它们是查询对象。所以你想要像

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

等等。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章