Class: NestedRecord::NestedAccessorsSetup
- Inherits:
-
Object
- Object
- NestedRecord::NestedAccessorsSetup
- Defined in:
- lib/nested_record/nested_accessors_setup.rb
Instance Method Summary collapse
-
#initialize(owner, name, class_name: false, default: {}, &block) ⇒ NestedAccessorsSetup
constructor
A new instance of NestedAccessorsSetup.
- #name ⇒ Object
Constructor Details
#initialize(owner, name, class_name: false, default: {}, &block) ⇒ NestedAccessorsSetup
Returns a new instance of NestedAccessorsSetup.
2 3 4 5 6 7 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 38 39 40 41 42 43 |
# File 'lib/nested_record/nested_accessors_setup.rb', line 2 def initialize(owner, name, class_name: false, default: {}, &block) raise ArgumentError, 'block is required for .nested_accessors_in' unless block recorder = NestedRecord::MacroRecorder.new recorder.instance_eval(&block) @has_one_setup = owner.has_one_nested(name, class_name: class_name, default: default, attributes_writer: { strategy: :rewrite }) do recorder.apply_to(self) end @extension = Module.new macros = [ recorder, *recorder.macros.select do |macro, args, _| macro == :include && args.first.is_a?(NestedRecord::Concern) end.map! { |_, args, _| args.first.macro_recorder } ].flat_map(&:macros) macros.each do |macro, args, _block| case macro when :attribute attr_name = args.first delegate(attr_name) delegate("#{attr_name}?") delegate1("#{attr_name}=") when :has_one_nested assoc_name = args.first delegate(assoc_name) delegate("#{assoc_name}!") delegate1("#{assoc_name}=") delegate1("#{assoc_name}_attributes=") when :has_many_nested assoc_name = args.first delegate(assoc_name) delegate1("#{assoc_name}=") delegate1("#{assoc_name}_attributes=") end end owner.include(@extension) end |
Instance Method Details
#name ⇒ Object
45 46 47 |
# File 'lib/nested_record/nested_accessors_setup.rb', line 45 def name @has_one_setup.name end |