Rails3 対応 MongoDB ORM、Mongoid 詳解―コールバック
Mongoid は以下のコールバックをサポートしています:
- before_create
- before_destroy
- before_save
- before_update
- before_validation
- after_create
- after_initialize
- after_destroy
- after_save
- after_update
- after_validation
コールバックは、他のドキュメントにエンベッドされたものも含めて、全てのドキュメントにあります。Mongoid は永続化アクションが実行された時だけ、コールバックを発動します。Mongoid の狙いは、広い階層をサポートすること、ドキュメントのすべての階層にまたがって実行されない最適化されたアトミックな更新を扱うことにあります。
article.rb:
class Article include Mongoid::Document field :name field :body field :slug before_create :generate_slug protected def generate_slug self.slug = name.to_permalink end end
コールバックは ActiveModel 由来なので、以下のような新しい構文を使うことができます:
article.rb:
class Article include Mongoid::Document field :name field :body field :slug set_callback(:save, :before) do |document| document.generate_slug end protected def generate_slug self.slug = name.to_permalink end end