Подтвердить что ты не робот

Как вы можете сделать условие, когда предложение с использованием AREL

Как вы можете сделать условие, где предложение? У меня есть задача rake, которая выполняет запрос. Скажем, я создаю такой запрос:

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

Теперь, если я передаю определенный параметр в команду rake, я хочу добавить к предложению where. Я думал примерно так:

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

Но это просто заменяет существующее предложение where. Как я могу добавить его в существующие предложения where?

4b9b3361

Ответ 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)