以下のgistが超わかりやすかった。リンク先のコメント欄にはMongoid 5.0.1の場合も追記されている。
https://gist.github.com/jingoro/3015664#gistcomment-1629159
require 'rubygems' | |
require 'bundler/setup' | |
require 'mongoid' | |
Mongoid.configure do |config| | |
config.master = Mongo::Connection.new('localhost', 27017, :logger => nil).db('mongoid-test') | |
end | |
class A | |
include Mongoid::Document | |
field :a | |
before_save { p 'before_save' } | |
before_update { p 'before_update' } | |
before_create { p 'before_create' } | |
after_save { p 'after_save' } | |
after_update { p 'after_update' } | |
after_create { p 'after_create' } | |
around_save { |&b| p 'start around_save'; b.call; p 'end around_save' } | |
around_create { |&b| p 'start around_create'; b.call; p 'end around_create' } | |
around_update { |&b| p 'start around_update'; b.call; p 'end around_update' } | |
end | |
a = A.new | |
a.save | |
#=> "before_save" | |
#=> "start around_save" | |
#=> "before_create" | |
#=> "start around_create" | |
#=> "end around_create" | |
#=> "after_create" | |
#=> "end around_save" | |
#=> "after_save" | |
a.a = 1 | |
a.save | |
#=> "before_save" | |
#=> "start around_save" | |
#=> "before_update" | |
#=> "start around_update" | |
#=> "end around_update" | |
#=> "after_update" | |
#=> "end around_save" | |
#=> "after_save" |