モジュールで 'before_save' コールバックを定義することは可能ですか? 質問する

モジュールで 'before_save' コールバックを定義することは可能ですか? 質問する

モジュール内でコールバックを定義することは可能ですかbefore_save? 次のようなクラスで定義できます:

class Model
  include MongoMapper::Document
  include MyModule
end

そして次のようなモジュール:

module MyModule
  before_save :do_something

  def do_something
    #do whatever
  end  
end 

do_somethingオブジェクトが保存される前に呼び出されますかModel? このように試してみましたが、 が返されますundefined method 'before_save' for MyModule:Module

単純なことであれば申し訳ありません。私は Ruby と Rails の初心者です。

ベストアンサー1

Ruby on Rails < 3 (Rails 機能なし、Ruby のみ)

module MyModule
  def self.included(base)
    base.class_eval do
      before_save :do_something
    end
  end

  def do_something
    #do whatever
  end
end

Ruby on Rails >= 3 (RailsConcern機能付き)

module MyModule
  extend ActiveSupport::Concern

  included do
    before_save :do_something
  end

  def do_something
    #do whatever
  end
end

おすすめ記事