new blog post Mongoid: Use ObjectId as created_at
This commit is contained in:
parent
b27d1b251c
commit
71416216f9
@ -0,0 +1,44 @@
|
||||
---
|
||||
layout: post
|
||||
title: "Mongoid: Use ObjectId as created_at"
|
||||
date: 2013-08-23 07:34
|
||||
comments: true
|
||||
categories:
|
||||
- mongodb
|
||||
- rails
|
||||
- mongoid
|
||||
description: "Mongoid: Use ObjectId as created_at"
|
||||
---
|
||||
|
||||
One great feature of Mongodb is, that the first bytes of each ObjectID contains the time, they were generated.
|
||||
This can be exploited to mimic the well known `created_at` field in rails.
|
||||
First put this file in your lib directory.
|
||||
|
||||
```ruby
|
||||
#lib/mongoid/created.rb
|
||||
module Mongoid
|
||||
module CreatedAt
|
||||
# Returns the creation time calculated from ObjectID
|
||||
#
|
||||
# @return [ Date ] the creation time
|
||||
def created_at
|
||||
id.generation_time
|
||||
end
|
||||
end
|
||||
end
|
||||
```
|
||||
|
||||
Now you can include this module in every Model, where you need created at.
|
||||
|
||||
```ruby
|
||||
#app/models/user.rb
|
||||
class User
|
||||
include Mongoid::Document
|
||||
include Mongoid::CreatedAt
|
||||
# ...
|
||||
end
|
||||
u = User.new
|
||||
u.created_at
|
||||
```
|
||||
|
||||
That's all easy enough, isn't it?
|
Loading…
Reference in New Issue
Block a user