module Skroutz::Associations

Public Instance Methods

association(name, options = {}) click to toggle source
# File lib/skroutz/associations.rb, line 6
def association(name, options = {})
  associations << name
  define_association(name, options)
end
associations() click to toggle source
# File lib/skroutz/associations.rb, line 11
def associations
  @associations ||= []
end
define_association(name, options) click to toggle source
# File lib/skroutz/associations.rb, line 17
def define_association(name, options) # rubocop:disable Metrics/AbcSize
  define_method(name) do
    class_name = options.fetch(:class_name, name.to_s).classify.pluralize
    owner = attributes.key?("#{name}_id") ? nil : self
    prefix = options[:class_name] && owner ? name.to_s : nil

    klass = "Skroutz::#{class_name}Collection".constantize
    collection = klass.new nil, client, owner, prefix: prefix

    owner ? collection : collection.find(attributes["#{name}_id"])
  end
end