[英]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.