Module: ActiveRepository::Writers::InstanceMethods

Included in:
Base
Defined in:
lib/active_repository/writers.rb

Overview

:nodoc:

Instance Method Summary collapse

Instance Method Details

#attributes=(new_attributes) ⇒ Object

Assigns new_attributes parameter to the attributes in self.



29
30
31
32
33
# 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

#deleteObject

Deletes self from the repository.



36
37
38
39
40
41
42
43
# 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) ⇒ Object

Updates #key attribute with #value value.



46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
# 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) ⇒ Object

Updates attributes in self with the attributes in the parameter



68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
# 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