Class: SimpleParams::NestedParamsClassBuilder
- Inherits:
-
Object
- Object
- SimpleParams::NestedParamsClassBuilder
- Defined in:
- lib/simple_params/nested_params_class_builder.rb
Instance Method Summary collapse
-
#build(nested_params, name, options, &block) ⇒ Object
TODO: Need to test this!.
-
#initialize(parent) ⇒ NestedParamsClassBuilder
constructor
A new instance of NestedParamsClassBuilder.
Constructor Details
#initialize(parent) ⇒ NestedParamsClassBuilder
Returns a new instance of NestedParamsClassBuilder.
3 4 5 |
# File 'lib/simple_params/nested_params_class_builder.rb', line 3 def initialize(parent) @parent = parent end |
Instance Method Details
#build(nested_params, name, options, &block) ⇒ Object
TODO: Need to test this!
8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 |
# File 'lib/simple_params/nested_params_class_builder.rb', line 8 def build(nested_params, name, , &block) klass_name = name.to_s.split('_').collect(&:capitalize).join Class.new(nested_params).tap do |klass| @parent.send(:remove_const, klass_name) if @parent.const_defined?(klass_name) @parent.const_set(klass_name, klass) klass.instance_eval <<-DEF def parent_class #{@parent} end DEF klass.class_eval('extend ActiveModel::Naming') klass.class_eval(&block) klass.class_eval("self.options = #{}") if klass.parent_class.using_rails_helpers? klass.instance_eval("with_rails_helpers") end # define a _destroy param (Boolean, default: false) if klass.using_rails_helpers? klass.send(:define_attribute, :_destroy, {type: :boolean, default: false}) end end end |