рельсы, макет before_filter - PullRequest
0 голосов
/ 16 марта 2012

У меня есть несколько моделей, которые должны быть «закончены» через пару дней после создания. Я сделал 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 пропустил проверки в контексте одного теста?

1 Ответ

1 голос
/ 16 марта 2012

вы должны добавить :on => :create к вашей проверке, чтобы вызов update_attributes в вашем before_filter не вызывал его.

...