class FlexCommerceApi::JsonApiClientExtension::HasManyAssociationProxy

Attributes

association_name[RW]
container_instance[RW]
options[RW]
real_instance[RW]

Public Class Methods

new(real_instance, container_instance, association_name, options) click to toggle source
# File lib/flex_commerce_api/json_api_client_extension/has_many_association_proxy.rb, line 6
def initialize(real_instance, container_instance, association_name, options)
  self.real_instance = real_instance
  self.container_instance = container_instance
  self.association_name = association_name
  self.options = options
end

Public Instance Methods

create(attrs) click to toggle source
# File lib/flex_commerce_api/json_api_client_extension/has_many_association_proxy.rb, line 37
def create(attrs)
  new(attrs).tap do |instance|
    instance.save
  end
end
find(pk) click to toggle source

Finds an instance by primary key

@param [Integer|Number|Float] pk The primary key value to be found @return The resource found or nil if not found

# File lib/flex_commerce_api/json_api_client_extension/has_many_association_proxy.rb, line 19
def find(pk)
  method = primary_key
  real_instance.detect {|i| i.send(method) == pk}
end
new(attrs) click to toggle source

Creates a new associated item - if the option “inverse_of” is specified, then automatically create a relationship back to the container with the name specified in “inverse_of”

# File lib/flex_commerce_api/json_api_client_extension/has_many_association_proxy.rb, line 27
def new(attrs)
  my_attrs = attrs.dup
  if options.key?(:inverse_of)
    my_attrs[:relationships] ||= {}
    # Dont modify the original relationship if it was present below
    my_attrs[:relationships] = my_attrs[:relationships].merge(options[:inverse_of] => container_instance)
  end
  association.association_class.new(my_attrs)
end
to_a() click to toggle source
# File lib/flex_commerce_api/json_api_client_extension/has_many_association_proxy.rb, line 43
def to_a
  real_instance
end

Private Instance Methods

association() click to toggle source
# File lib/flex_commerce_api/json_api_client_extension/has_many_association_proxy.rb, line 49
def association
  container_instance.class.associations.detect {|a| a.attr_name == association_name.to_sym}
end
primary_key() click to toggle source
# File lib/flex_commerce_api/json_api_client_extension/has_many_association_proxy.rb, line 53
def primary_key
  association.association_class.primary_key
end