如何执行条件where子句?我有一个运行查询的rake任务。假设我正在构建这样的查询:
residentials = Residential.where(:is_active => true)
现在,如果我将某个参数传递给rake任务,我想添加到where子句中。我在想这样的事情:
residentials.where(:something_else => true) if param_was_passed
但这只是取代了现有的where条款。如何将其添加到现有的where子句中?
可以链接where语句
residentials = Residential.where(:is_active => true)
residentials = residentials.where(:other_thing => true) if param_was_passed
这应该行得通。
请确保这不是函数调用中的最后一行;在这种情况下,重复residentials
变量作为最后一行。(根据@digug69评论)
您可以构建哈希,然后将其提供给.where
方法。类似于:
h = { }
h[:is_active] = true
h[:field_x] = true if param_was_passed
residentials = Residential.where(h)