rails 里 mongoid 生成的时间格式默认都是 created_at 和 updated_at 这种标准的日期格式,好像 ActiveRecord 也是这样,本人觉得 created_on 和 updated_on 这种时间戳格式不论是排序还是比大小都要优于前一种格式,如果真是这样为什么默认生成的不是时间戳格式?不知道大家是怎么看的?是否可以改 mongoid 源码来支持这种格式或通过 gem 插件来实现?
难道你的意思是想要
fields.delete("created_at")
field :created_on, as: :created_at
看不懂这样改个名字有啥优势……
#1 楼 @huacnlee #2 楼 @aptx4869 不好意思,我表达的不太好,我记得看过一篇文章,生成 created_at 或 updated_at 一般都是标准的时间格式,如:ISODate("2013-05-23T14:59:44.379Z"),而 updated_on 或 updated_on 一般生成是整型的时戳,如:1369321616,我觉得生成整型时间戳格式在排序或比较大小的速度要优于那种日期格式,而 mongoid 的 Mongoid::Timestamps 创建或更新时默认生成的是 created_at 和 updated_at 的这种时间格式 ISODate("2013-05-23T14:59:44.379Z"),如果换作另一种方式可能需要改 mongoid 源码或依靠 gem 插件的支持了。呵呵,有点罗嗦、小题大作了
就是 Time.now.utc 而已 https://github.com/mongoid/mongoid/blob/master/lib/mongoid/timestamps/updated.rb
def set_updated_at self.updated_at = Time.now.utc unless updated_at_changed? end
实际储存会转换成 mongodb 本身的时间类型
#9 楼 @tianshuai 我没试过,你可以试试。还要把
field :updated_at, type: Time
这句改成 Integer。
如果是覆盖的话,还要注意 gem 升级的时候是否兼容。这个模块很小,也可以写个自己的模块,像这些
https://github.com/ruby-china/ruby-china/tree/master/app/models/mongoid