【问题标题】:rails, mock before_filter导轨,模拟 before_filter
【发布时间】: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


【解决方案1】:

您应该在验证中添加:on =&gt; :create,这样在您的before_filter 中调用update_attributes 就不会触发它。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多