ruby-on-rails - Rails 时间在控制台 session 过程中不会改变

标签 ruby-on-rails ruby ruby-on-rails-3.2

我正在开发 Rails 3.2 应用程序。我们运行的是 Ruby 1.9.3 和 Postgres 9.1.3。网站上的大部分内容都是按published_at 日期时间戳组织的。面向公众的查询要求提供与 Time.zone.now 相关的内容:

Post.where(["published_at <= ?", Time.zone.now])

加载控制台并请求此帖子后,生成了此查询:

SELECT "posts".* FROM "posts" WHERE (published_at <= '2013-02-25 16:32:19.852109')

10 分钟后在同一个控制台 session 中:

SELECT "posts".* FROM "posts" WHERE (published_at <= '2013-02-25 16:32:19.852109')

请注意,Rails 注入(inject)查询的时间没有改变。如果我运行本地开发 session 几个小时,Rails 注入(inject)的时间戳始终是相同的。

此外,我尝试将 Time.zone.now 替换为 Time.now 甚至 Time.new,结果都相同。

最佳答案

像这样重写你的范围:

scope :myscope, ->{ where(["published_at <= ?", Time.zone.now]) }

Time.zone.now 显示为“卡住”,因为范围宏仅执行一次(在加载类时)。使用 lambda 可以防止这种情况发生。

关于ruby-on-rails - Rails 时间在控制台 session 过程中不会改变,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15071930/

相关文章:

ruby - Jekyll - 生成 JSON 文件和 HTML 文件

ruby-on-rails-3.2 - js.erb 未呈现 - ActionView::MissingTemplate

ruby-on-rails - 未定义的方法 `layout'

ruby-on-rails - 有办法处理 `after_save` 和 `after_destroy` "equally"吗?

ruby-on-rails - 在 Controller 之间共享一些 before_filters

ruby-on-rails - 如何修复正则表达式中的无效多字节字符?

ruby - Rails ActiveRelation 到哈希

ruby-on-rails - 跳过载波完整性和处理验证

ruby-on-rails-3.2 - ActiveAdmin 错误未初始化的常量 ActiveAdmin::Dashboards

ruby-on-rails - rails : Or & and in Rails ActiveRecord where clause