Sha256: 96c31430a0af0a3a8ed1a361944c35a98e8225ef79e3e88bdcc9aa5ef6b30462

Contents?: true

Size: 777 Bytes

Versions: 1

Compression:

Stored size: 777 Bytes

Contents

module FleetAPI::Attributes
  def assoc_reader(name, options={})
    assoc_key  = options[:key] || "#{name}_id"
    collection = options[:collection] || "#{name}s"
    define_method(name) do
      if assoc_id = self.send(assoc_key)
        self.connection.send(collection).get(assoc_id)
      else self.instance_variable_get("@#{name}")
      end
    end
  end

  def assoc_writer(name, options={})
    assoc_key = options[:key] || "#{name}_id"
    define_method("#{name}=") do |assoc|
      if assoc.is_a?(Cistern::Model)
        self.send("#{assoc_key}=", assoc.identity)
      else
        self.instance_variable_set("@#{name}", assoc)
      end
    end
  end

  def assoc_accessor(name, options={})
    assoc_reader(name, options)
    assoc_writer(name, options)
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
coreos-fleet-api-0.1.0 lib/fleet_api/attributes.rb