DataMapper を使う (Hook)
メソッド呼び出し前後に callback を仕掛けることができる.
- DataMapper Hooks
インスタンスメソッドに対する Hook
class Post include DataMapper::Resource ... before :save, :do_before_save # save メソッドの直前 after :save, :do_after_save # save メソッドの直後 def do_before_save # save の直前に何か処理する end def do_after_save # save の直後に何か処理する end end
直接ブロックで指定することも可能.
class Post include DataMapper::Resource ... before :save do # save の直前に何か処理する end end
保存の直前で値を正規化したり,ログを仕込んだりすることができる.
クラスメソッドに対する Hook
class Post include DataMapper::Resource ... def self.draft_posts all(:draft => true) end # ↓ここで draft_posts に対して callback を仕掛ける before_class_method :draft_posts, :do_before_draft_posts # draft_posts メソッドの直前 def self.do_before_draft_posts ... end end
after も同様.