簡體   English   中英

時間戳未在RoR應用程序中更新

[英]Timestamp not updating in RoR application

我有一個小網站,按提交日期對新聞主題進行排序。 在本地,這很好。 即使在連續快速發布故事時,時間戳也會有所不同。

例:

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設置數據庫,則秒值似乎被忽略或凍結。

示例文檔DateTime值:

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.now會產生靜態值。

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 }

一切都可能在您的開發環境中正常工作,因為文件一直在重新加載。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM