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