Как вы можете сделать условие, когда предложение с использованием AREL
Как вы можете сделать условие, где предложение? У меня есть задача rake, которая выполняет запрос. Скажем, я создаю такой запрос:
residentials = Residential.where(:is_active => true)
Теперь, если я передаю определенный параметр в команду rake, я хочу добавить к предложению where. Я думал примерно так:
residentials.where(:something_else => true) if param_was_passed
Но это просто заменяет существующее предложение where. Как я могу добавить его в существующие предложения where?
Ответы
Ответ 1
Можно связать, где утверждения
residentials = Residential.where(:is_active => true)
residentials = residentials.where(:other_thing => true) if param_was_passed
Это должно сработать.
Убедитесь, что это не последняя строка вызова функции; повторите переменную residentials
как последнюю строку в этом случае. (Согласно комментарию @digger69)
Ответ 2
Вы можете создать хэш, а затем предоставить его методу .where
. Что-то вроде:
h = { }
h[:is_active] = true
h[:field_x] = true if param_was_passed
residentials = Residential.where(h)