Module: Makura::Model::InstanceMethods
- Defined in:
- lib/makura/model.rb
Instance Method Summary collapse
- #==(obj) ⇒ Object
- #[](key) ⇒ Object
- #[]=(key, value) ⇒ Object
-
#attach(*args) ⇒ Object
path, file, args = {}).
- #clone ⇒ Object
- #destroy ⇒ Object
-
#detach(name) ⇒ Object
delete attachment by name.
- #eql?(other) ⇒ Boolean
- #hash ⇒ Object
- #initialize(hash = {}) ⇒ Object
- #inspect ⇒ Object
- #merge!(hash) ⇒ Object
- #pretty_print(o) ⇒ Object
- #save ⇒ Object
- #save! ⇒ Object
- #saved? ⇒ Boolean
- #to_hash ⇒ Object
- #to_json ⇒ Object
Instance Method Details
#==(obj) ⇒ Object
134 135 136 |
# File 'lib/makura/model.rb', line 134 def ==(obj) self.class == obj.class and self._id == obj._id end |
#[](key) ⇒ Object
63 64 65 |
# File 'lib/makura/model.rb', line 63 def [](key) @_hash[key.to_s] end |
#[]=(key, value) ⇒ Object
67 68 69 |
# File 'lib/makura/model.rb', line 67 def []=(key, value) @_hash[key.to_s] = value end |
#attach(*args) ⇒ Object
path, file, args = {})
114 115 116 |
# File 'lib/makura/model.rb', line 114 def attach(*args) self.class.database.(self, *args) end |
#clone ⇒ Object
146 147 148 149 150 151 |
# File 'lib/makura/model.rb', line 146 def clone hash = @_hash.dup hash.delete('_id') hash.delete('_rev') self.class.new(hash) end |
#destroy ⇒ Object
130 131 132 |
# File 'lib/makura/model.rb', line 130 def destroy self.class.database.delete(_id, :rev => _rev) end |
#detach(name) ⇒ Object
delete attachment by name. we make sure the parameter is given and a nonempty string to avoid destroying the document itself
121 122 123 124 125 126 127 128 |
# File 'lib/makura/model.rb', line 121 def detach(name) name.strip! return if name.empty? self.class.database.request(:delete, "#{_id}/#{name}", :rev => _rev) rescue Makura::Error::Conflict self['_rev'] = self.class[self._id]['_rev'] retry end |
#eql?(other) ⇒ Boolean
142 143 144 |
# File 'lib/makura/model.rb', line 142 def eql?(other) other == self && other.hash == self.hash end |
#hash ⇒ Object
138 139 140 |
# File 'lib/makura/model.rb', line 138 def hash @_hash.hash end |
#initialize(hash = {}) ⇒ Object
39 40 41 42 |
# File 'lib/makura/model.rb', line 39 def initialize(hash = {}) @_hash = self.class.defaults.dup merge!(hash) end |
#inspect ⇒ Object
79 80 81 |
# File 'lib/makura/model.rb', line 79 def inspect "#<#{self.class} #{@_hash.inspect}>" end |
#merge!(hash) ⇒ Object
44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 |
# File 'lib/makura/model.rb', line 44 def merge!(hash) case hash when Makura::Model merge!(hash.to_hash) when Hash hash.each{|key, value| meth = "#{key}=" if respond_to?(meth) self.send("#{key}=", value) else self[key.to_s] = value end } else raise ArgumentError, "This is neither relation data nor an Hash" end end |
#pretty_print(o) ⇒ Object
83 84 85 |
# File 'lib/makura/model.rb', line 83 def pretty_print(o) ["#<#{self.class} ", @_hash, ">"].each{|e| e.pretty_print(o) } end |
#save ⇒ Object
91 92 93 94 95 |
# File 'lib/makura/model.rb', line 91 def save return if not valid? if respond_to?(:valid) return if saved? save! end |
#save! ⇒ Object
97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 |
# File 'lib/makura/model.rb', line 97 def save! hash = self.to_hash self.class.makura_relation.each do |kind, relation_hash| relation_hash.each do |key, value| hash[key.to_s] = hash[key.to_s] #._id end end response = self.class.database.save(hash) self._rev = response['rev'] self._id = response['id'] return self end |
#saved? ⇒ Boolean
87 88 89 |
# File 'lib/makura/model.rb', line 87 def saved? self['_rev'] end |
#to_hash ⇒ Object
71 72 73 |
# File 'lib/makura/model.rb', line 71 def to_hash @_hash.dup end |
#to_json ⇒ Object
75 76 77 |
# File 'lib/makura/model.rb', line 75 def to_json @_hash.to_json end |