У меня есть несколько моделей, которые должны быть «закончены» через пару дней после создания.
Я сделал before_filter, который находит все модели, которые должны быть закончены, и заканчивает их.
Проблема в том, что я не могу понять, как написать спецификацию для того же самого.
Модели проверяются следующим образом: (псевдо-проверка):
validates :till, date: { later_than: 2.days.from_now.to_date, earlier_than: 8.days.from_now.to_date }
фильтр before_filter выглядит так:
@models = Model.where(['till <= ? AND finished = ?', Time.now.to_date, false])
@models.each do |model|
model.update_attributes(finished: true)
end
end
Таким образом, чтобы мой before_filter нашел тестируемую модель, я могу сохранить ее с фиктивной датой (т.е. 5.days.ago), передав validate: false
Но перед фильтром вызов update_attributes
вернет false, поскольку модель имеет неправильную дату.
Не могли бы вы посоветовать, как я могу сделать, чтобы before_filter пропустил проверки в контексте одного теста?