module CouchRest::Attributes
Public Class Methods
Initialize a new CouchRest
Document
and prepare a hidden attributes hash.
When inherting a Document
, it is essential that the super method is called before you own changes to ensure that the attributes hash has been initialized before you attempt to use it.
# File lib/couchrest/attributes.rb, line 22 def initialize(attrs = nil) attrs.each{|k,v| self[k] = v} unless attrs.nil? end
Public Instance Methods
# File lib/couchrest/attributes.rb, line 34 def [](key) _attributes[key.to_s] end
# File lib/couchrest/attributes.rb, line 31 def []=(key, value) _attributes[key.to_s] = value end
Provide JSON data hash that can be stored in the database. Will go through each attribute value and request the `as_couch_json` method on each if available, or return the value as-is.
# File lib/couchrest/attributes.rb, line 66 def as_couch_json _attributes.inject({}) {|h, (k,v)| h[k] = v.respond_to?(:as_couch_json) ? v.as_couch_json : v; h} end
# File lib/couchrest/attributes.rb, line 54 def clone new = super @_attributes = @_attributes.dup new end
# File lib/couchrest/attributes.rb, line 46 def delete(key) _attributes.delete(key.to_s) end
# File lib/couchrest/attributes.rb, line 49 def dup new = super @_attributes = @_attributes.dup new end
Freeze the object's attributes instead of the actual document. This prevents further modifications to stored data, but does allow access to local variables useful for callbacks or cached data.
# File lib/couchrest/attributes.rb, line 73 def freeze _attributes.freeze; self end
has_key? is deprecated for Hash, key? replaces it github.com/bbatsov/ruby-style-guide#hash-key
# File lib/couchrest/attributes.rb, line 43 def has_key?(key) key?(key) end
Provide details of the current keys in the reponse. Based on ActiveRecord::Base.
# File lib/couchrest/attributes.rb, line 78 def inspect attributes_as_nice_string = self.keys.collect { |key| "#{key}: #{self[key].inspect}" }.compact.join(", ") "#<#{self.class} #{attributes_as_nice_string}>" end
key? is preferred over has_key?
# File lib/couchrest/attributes.rb, line 38 def key?(key) _attributes.has_key?(key.to_s) end
# File lib/couchrest/attributes.rb, line 59 def to_hash _attributes end
Protected Instance Methods
Define accessor for _attributes hash that will instantiate the model if this has not already been done.
# File lib/couchrest/attributes.rb, line 89 def _attributes @_attributes ||= {} end