Class: SimpleParams::NestedParamsClassBuilder

Inherits:
Object
  • Object
show all
Defined in:
lib/simple_params/nested_params_class_builder.rb

Instance Method Summary collapse

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
31
32
33
34
35
36
37
# File 'lib/simple_params/nested_params_class_builder.rb', line 8

def build(nested_params, name, options, &block)
  klass_name = name.to_s.split('_').collect(&:capitalize).join
  name_symbol = name.to_sym
  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 parent_class\n        \#{@parent}\n      end\n\n      def name_symbol\n        :\#{name_symbol}\n      end\n    DEF\n\n    klass.class_eval('extend ActiveModel::Naming')\n    klass.class_eval(&block)\n    klass.class_eval(\"self.options = \#{options}\")\n    if klass.parent_class.using_rails_helpers?\n      klass.instance_eval(\"with_rails_helpers\")\n    end\n\n    # define a _destroy param (Boolean, default: false)\n    if klass.using_rails_helpers?\n      klass.send(:define_attribute, :_destroy, {type: :boolean, default: false})\n    end\n  end\nend\n"