【发布时间】:2012-03-16 11:26:46
【问题描述】:
我有一些模型应该在创建后的几天内“完成”。 我制作了一个 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 找到测试模型,我可以通过传递 validate: false 以假日期(即 5.days.ago)保存它
但在过滤之前,update_attributes 调用将返回 false,因为模型的日期错误。
您能否建议我如何让 before_filter 在单个测试用例的上下文中跳过验证?
【问题讨论】:
-
您的验证是否应该在创建时触发而不是在更新时触发?
-
omg,如此明显.. 随意添加此作为答案,以便我接受它
标签: ruby-on-rails ruby-on-rails-3 stub before-filter