Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/55.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails RoR应用程序中的时间戳未更新_Ruby On Rails_Ruby_Mongodb_Heroku_Mongoid - Fatal编程技术网

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
:所有间隔值都是相同的,而不仅仅是秒。