Module: Arkenstone::Associations::Resources::InstanceMethods

Defined in:
lib/arkenstone/associations/resources.rb

Instance Method Summary collapse

Instance Method Details

#attach_nested_has_many_resource_methods(nested_resources, nested_resource_name, nested_resource_class_name = nested_resource_name) ⇒ Object

Attaches singleton methods for has_many relationships



18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
# File 'lib/arkenstone/associations/resources.rb', line 18

def attach_nested_has_many_resource_methods(nested_resources, nested_resource_name,
                                            nested_resource_class_name = nested_resource_name)
  parent_instance = self
  parent_instance.extend HasManyParentSingletonMethods
  parent_instance.add_resource_methods(nested_resource_name)

  nested_klass = prefix_with_class_module(nested_resource_class_name.to_s.classify)
  nested_klass = Kernel.const_get(nested_klass)
  nested_klass.url build_nested_url(nested_resource_name)

  nested_resources.define_singleton_method(:arkenstone_parent_instance) { parent_instance }
  nested_resources.define_singleton_method(:arkenstone_nested_class) { nested_klass }
  nested_resources.define_singleton_method(:arkenstone_nested_resource_name) { nested_resource_name }
  nested_resources.extend HasManySingletonMethods
  nested_resources
end