module ActiveRepository::Writers::InstanceMethods

Public Instance Methods

attributes=(new_attributes) click to toggle source

Assigns new_attributes parameter to the attributes in self.

# File lib/active_repository/writers.rb, line 29
def attributes=(new_attributes)
  new_attributes.each do |k,v|
    self.send("#{k.to_s == '_id' ? 'id' : k.to_s}=", v)
  end
end
delete() click to toggle source

Deletes self from the repository.

Calls superclass method
# File lib/active_repository/writers.rb, line 36
def delete
  klass = self.class
  if klass.persistence_class == klass
    super
  else
    PersistenceAdapter.delete(klass, self.id)
  end
end
update_attribute(key, value) click to toggle source

Updates key attribute with value value.

# File lib/active_repository/writers.rb, line 46
def update_attribute(key, value)
  ret = true
  key = key.to_sym

  if self.class == persistence_class
    object = self.class.where(:id => self.id).first_or_initialize

    self.send("#{key}=", value)

    ret = self.save
  else
    ret, object = PersistenceAdapter.update_attribute(self.class, self.id, key, value)

    self.attributes = object.attributes
  end

  reload

  ret
end
update_attributes(attributes) click to toggle source

Updates attributes in self with the attributes in the parameter

# File lib/active_repository/writers.rb, line 68
def update_attributes(attributes)
  attributes  = attributes.symbolize_keys if attributes.respond_to?(:symbolize_keys)
  klass       = self.class
  model_class = persistence_class

  if klass == model_class
    attributes.each do |key, value|
      self.send("#{key}=", value) unless key == :id
    end
    save
  else
    attributes = self.attributes.merge(attributes)
    ret, object = PersistenceAdapter.update_attributes(self.class, self.id, attributes)

    self.attributes = object.attributes
  end

  reload

  ret
end