Est-il possible de définir un rappel “before_save” dans un module?

Est-il possible de définir un rappel before_save dans un module? Comme ça avec une classe comme celle-ci:

 class Model include MongoMapper::Document include MyModule end 

et un module comme celui-ci:

 module MyModule before_save :do_something def do_something #do whatever end end 

do_something sera- do_something il appelé avant que des objects Model soient enregistrés? Je l’ai essayé comme ça, mais j’obtiens une undefined method 'before_save' for MyModule:Module .

Excuses si c’est quelque chose de simple – Je suis nouveau à Ruby et à Rails.

Dans Ruby on Rails <3 (sans les fonctionnalités Rails, uniquement Ruby)

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

En Ruby on Rails> = 3 (avec fonctionnalité Rails Concern )

 module MyModule extend ActiveSupport::Concern included do before_save :do_something end def do_something #do whatever end end 

La méthode included un module peut être ce dont vous avez besoin.

http://www.ruby-doc.org/core-2.1.2/Module.html#method-i-included

Vous pouvez le faire avec ActiveSupport :: Concern (en fait et sans, mais plus clair et préféré)

 require 'active_support/concern' module MyModule extend ActiveSupport::Concern included do # relations, callbacks, validations, scopes and others... end # instance methods module ClassMethods # class methods end end