- xml - AJAX/Jquery XML 解析
- 具有多重继承的 XML 模式
- .net - 枚举序列化 Json 与 XML
- XML 简单类型、简单内容、复杂类型、复杂内容
我在 Rails 3.0 应用程序中指定一个范围,如下所示:
class DrawingList < ActiveRecord::Base
scope :active_drawings, where('start_date <= ? AND end_date >= ?', Date.today, Date.today)
end
在我的规范中,我想做的是:
before do
@list = DrawingList.create #things that include begin and end dates
end
it "doesn't find an active drawing if they are out of range" do
pending "really need to figure out how to work timecop in the presence of scopes"
Timecop.travel(2.days)
puts Date.today.to_s
DrawingList.active_drawings.first.should be_nil
end
正如您想象的那样,看跌期权确实表明 Date.today 是两天后。但是,范围是在不同的上下文中评估的,因此它使用旧的“今天”。如何在 Timecop 可能影响的背景下评估今天的人。
谢谢!
最佳答案
这是一个非常常见的错误。正如您在范围中所写的那样,日期是加载代码时的日期。如果您在生产环境中运行此代码,只有在您重新启动应用程序时才会重新加载代码(不同于在每次请求时重新加载代码的开发环境),您会在重新启动应用程序的那天得到正确的结果,但第二天结果一天前出,后天出 2 天等等。
像这样定义作用域的正确方法是
scope :active_drawings, lambda { where('start_date <= ? AND end_date >= ?', Date.today, Date.today)}
lambda 确保每次使用范围时都会评估这些日期。
关于ruby-on-rails - 将 Timecop gem 用于范围,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8855017/
我有一个使用 MRI ruby 和 Unicorn 作为应用服务器的 Rails 应用。该应用程序提供了一个为期 10 周的健身计划,我为以管理员身份登录的用户构建了一个功能,以便能够“时间旅行”
我正在尝试结合使用 Timecop 和查询 arel where_sql 到数据,但我似乎无法让 Timecop 真正卡住时间。我试过 Timecop.freeze 和 Timecop.freeze(
有人知道Groovy / Grails是否有类似于rubygem timecop的东西 我正在为Grails项目进行测试,我想以与gem相同的方式模拟DateTime类。 只是想知道是否有人已经使用G
我在 Rails 3.0 应用程序中指定一个范围,如下所示: class DrawingList = ?', Date.today, Date.today) end 在我的规范中,我想做的是: bef
我需要猴子补丁文件。 Timecop 不会影响文件系统报告的时间,这是 File.atime 使用的时间,而这又是 HttpClient 在将文件发布到服务器时使用的时间,这反过来意味着 VCR 不会
我发现了像 Timecop 这样的时间旅行 gem ,来测试与时间相关的功能。在开发中使用它是否可能和/或明智? 如果没有:还有其他时间旅行者 gem 适合开发吗?我找不到一个。 最佳答案 是的,当然
我发现了像 Timecop 这样的时间旅行 gem ,来测试与时间相关的功能。在开发中使用它是否可能和/或明智? 如果没有:还有其他时间旅行者 gem 适合开发吗?我找不到一个。 最佳答案 是的,当然
以下场景几乎概括了我的问题: Scenario: problems with subprocesses Given the date is 01/01/2012 10:31 When I ru
关闭。这个问题不符合Stack Overflow guidelines .它目前不接受答案。 我们不允许提问寻求书籍、工具、软件库等的推荐。您可以编辑问题,以便用事实和引用来回答。 关闭 7 年前。
我正在使用 timecop gem 以剔除日期。我也在使用 factory_girl以便更轻松地为我的规范创建对象。 这是我的工厂: FactoryGirl.define do factory :
我在使用 rspec、capybara、capybara-webkit 和 timecop 的某些集成规范中看到错误。 Capybara::FrozenInTime: time appears
我是一名优秀的程序员,十分优秀!