以下のgistが超わかりやすかった。リンク先のコメント欄にはMongoid 5.0.1の場合も追記されている。
https://gist.github.com/jingoro/3015664#gistcomment-1629159
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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" |