Module: ActionArgs::ActiveSupport::CallbackParameterizer
- Included in:
- ActiveSupport::Callbacks::Callback
- Defined in:
- lib/action_args/callbacks.rb
Instance Method Summary collapse
- #apply(code) ⇒ Object
-
#make_lambda(filter) ⇒ Object
Extending AS::Callbacks::Callback’s ‘make_lambda` not just to call specified method but to call the method with method parameters taken from `params`.
-
#start(key = nil, object = nil) ⇒ Object
Rails 3.2.
Instance Method Details
#apply(code) ⇒ Object
29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 |
# File 'lib/action_args/callbacks.rb', line 29 def apply(code) if (Symbol === @filter) && (@klass < ActionController::Base) method_body = <<-FILTER meth = method :#{@filter} method_parameters = meth.parameters ActionArgs::ParamsHandler.strengthen_params!(self.class, method_parameters, params) values = ActionArgs::ParamsHandler.extract_method_arguments_from_params method_parameters, params send :#{@filter}, *values FILTER if @kind == :before @filter = "begin\n#{method_body}\nend" else @filter = method_body.chomp end end super end |
#make_lambda(filter) ⇒ Object
Extending AS::Callbacks::Callback’s ‘make_lambda` not just to call specified method but to call the method with method parameters taken from `params`. This would happen only when
-
the filter was defined in Symbol form
-
the target object is_a ActionController object
10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 |
# File 'lib/action_args/callbacks.rb', line 10 def make_lambda(filter) if Symbol === filter lambda do |target, _, &blk| if ActionController::Base === target meth = target.method filter method_parameters = meth.parameters ActionArgs::ParamsHandler.strengthen_params!(target.class, method_parameters, target.params) values = ActionArgs::ParamsHandler.extract_method_arguments_from_params method_parameters, target.params target.send filter, *values, &blk else target.send filter, &blk end end else super end end |
#start(key = nil, object = nil) ⇒ Object
Rails 3.2
48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 |
# File 'lib/action_args/callbacks.rb', line 48 def start(key=nil, object=nil) if (Symbol === @filter) && (@klass < ActionController::Base) method_body = <<-FILTER meth = method :#{@filter} method_parameters = meth.parameters ActionArgs::ParamsHandler.strengthen_params!(self.class, method_parameters, params) values = ActionArgs::ParamsHandler.extract_method_arguments_from_params method_parameters, params send :#{@filter}, *values FILTER if @kind == :before @filter = "begin\n#{method_body}\nend" else @filter = method_body.chomp end end super end |