Ruby on rails RoR应用程序中的时间戳未更新
我有一个小网站,按提交给第二个网站的日期对新闻主题进行排序。在本地,这很好。即使连续快速发布故事,时间戳也会有所不同 例如:Ruby on rails RoR应用程序中的时间戳未更新,ruby-on-rails,ruby,mongodb,heroku,mongoid,Ruby On Rails,Ruby,Mongodb,Heroku,Mongoid,我有一个小网站,按提交给第二个网站的日期对新闻主题进行排序。在本地,这很好。即使连续快速发布故事,时间戳也会有所不同 例如: Submitted Fri Mar 25 14:31:09 2011 Submitted Fri Mar 25 14:30:45 2011 Submitted Fri Mar 25 14:30:23 2011 但是,一旦代码被推送到heroku并使用MongoHQ设置数据库,秒值似乎被忽略或冻结 示例文档日期时间值: added_on 03/14/2011 09:58
Submitted Fri Mar 25 14:31:09 2011
Submitted Fri Mar 25 14:30:45 2011
Submitted Fri Mar 25 14:30:23 2011
但是,一旦代码被推送到heroku并使用MongoHQ设置数据库,秒值似乎被忽略或冻结
示例文档日期时间值:
added_on 03/14/2011 09:58 AM
时间戳示例:
Submitted Thu Mar 24 13:48:40 2011
Submitted Thu Mar 24 13:48:40 2011
Submitted Thu Mar 24 13:48:40 2011
Submitted Thu Mar 24 13:48:40 2011
秒值似乎没有更新
这是模型代码
class Post
include Mongoid::Document
field :link
field :title
field :synopsis
field :added_on, :type => DateTime, :default => DateTime.now
field :poster
field :category
validates_presence_of :link
validates_presence_of :title
validates_presence_of :synopsis
validates_presence_of :category
validates_uniqueness_of :link
validates_uniqueness_of :title
embeds_many :replies
#referenced_in :topic
end
我猜您需要将默认值更改为Proc 在开发模式下,每个请求都会重新加载模型,因此
DateTime.now
始终是最新的。然而,在生产环境中,类在应用程序启动期间只加载一次(每个dyno),并且DateTime。现在会产生一个静态值
field :added_on, :type => DateTime, :default => Proc.new { DateTime.now }
应该是您想要的。在您的类中声明:
field :added_on, :type => DateTime, :default => DateTime.now
将在读取文件时处理。在Heroku上,当推送更新并编译slug时,就会发生这种情况。结果是,无论何时编译slug,默认值都是固定的。请尝试以下方法:
field :added_on, :type => DateTime, :default => lambda { DateTime.now }
在您的开发环境中,一切都可能正常工作,因为文件一直在重新加载。提交时间:2011年3月24日13:48:40
:所有间隔值都是相同的,而不仅仅是秒。