ruby 如何使用活动记录执行条件where子句

qyswt5oh  于 2023-06-29  发布在  Ruby
关注(0)|答案(2)|浏览(104)

你怎么能做一个条件句where子句?我有一个运行查询的rake任务。假设我正在构建一个查询,如下所示:

residentials = Residential.where(:is_active => true)

现在,如果我向rake任务传递某个参数,我想添加到where子句中。我在想这样的事情:

residentials.where(:something_else => true) if param_was_passed

但这只是替换了现有的where子句。如何将其添加到现有的where子句中?

yx2lnoni

yx2lnoni1#

可以链接where语句

residentials = Residential.where(:is_active => true)
residentials = residentials.where(:other_thing => true) if param_was_passed

这个应该能用
确保这不是函数调用中的最后一行;在这种情况下,重复residentials变量作为最后一行。(@digger69评论)

sdnqo3pr

sdnqo3pr2#

您可以构建散列,然后将其提供给.where方法。类似于:

h = { }
h[:is_active] = true
h[:field_x] = true if param_was_passed

residentials = Residential.where(h)

相关问题