Class: Parse::Object
- Inherits:
-
Hash
- Object
- Hash
- Parse::Object
- Defined in:
- lib/parse/object.rb
Overview
A Parse object parseplatform.github.io/docs/rest/guide/#object-format
Direct Known Subclasses
Instance Attribute Summary collapse
-
#class_name ⇒ Object
readonly
Returns the value of attribute class_name.
-
#client ⇒ Object
Returns the value of attribute client.
-
#created_at ⇒ Object
readonly
Returns the value of attribute created_at.
-
#parse_object_id ⇒ Object
(also: #id)
readonly
Returns the value of attribute parse_object_id.
-
#updated_at ⇒ Object
readonly
Returns the value of attribute updated_at.
Instance Method Summary collapse
- #array_add(field, value) ⇒ Object
- #array_add_relation(field, value) ⇒ Object
- #array_add_unique(field, value) ⇒ Object
- #array_remove(field, value) ⇒ Object
- #array_remove_relation(field, value) ⇒ Object
-
#decrement(field, amount = 1) ⇒ Object
Decrement the given field by an amount, which defaults to 1.
- #eql?(other) ⇒ Boolean (also: #==)
-
#get ⇒ Object
make it easier to deal with the ambiguity of whether you’re passed a pointer or object.
- #hash ⇒ Object
-
#increment(field, amount = 1) ⇒ Object
Increment the given field by an amount, which defaults to 1.
-
#initialize(class_name, data = nil, client = nil) ⇒ Object
constructor
A new instance of Object.
- #inspect ⇒ Object
- #new? ⇒ Boolean
-
#parse_delete ⇒ Object
Delete the remote Parse API object.
- #pointer ⇒ Object
-
#refresh ⇒ Object
Update the fields of the local Parse object with the current values from the API.
-
#rest_api_hash ⇒ Object
full REST api representation of object.
-
#safe_hash ⇒ Object
representation of object to send on saves.
-
#save ⇒ Object
Write the current state of the local object to the API.
-
#should_call_to_h?(value) ⇒ Boolean
Handle the addition of Array#to_h in Ruby 2.1.
- #to_h(*_a) ⇒ Object (also: #as_json, #to_hash)
- #to_json(*a) ⇒ Object
- #to_s ⇒ Object
- #update_attributes(data = {}) ⇒ Object
- #uri ⇒ Object
Constructor Details
#initialize(class_name, data = nil, client = nil) ⇒ Object
Returns a new instance of Object.
17 18 19 20 21 22 |
# File 'lib/parse/object.rb', line 17 def initialize(class_name, data = nil, client = nil) @class_name = class_name @op_fields = {} parse data if data @client = client end |
Instance Attribute Details
#class_name ⇒ Object (readonly)
Returns the value of attribute class_name.
11 12 13 |
# File 'lib/parse/object.rb', line 11 def class_name @class_name end |
#client ⇒ Object
Returns the value of attribute client.
14 15 16 |
# File 'lib/parse/object.rb', line 14 def client @client end |
#created_at ⇒ Object (readonly)
Returns the value of attribute created_at.
12 13 14 |
# File 'lib/parse/object.rb', line 12 def created_at @created_at end |
#parse_object_id ⇒ Object (readonly) Also known as: id
Returns the value of attribute parse_object_id.
10 11 12 |
# File 'lib/parse/object.rb', line 10 def parse_object_id @parse_object_id end |
#updated_at ⇒ Object (readonly)
Returns the value of attribute updated_at.
13 14 15 |
# File 'lib/parse/object.rb', line 13 def updated_at @updated_at end |
Instance Method Details
#array_add(field, value) ⇒ Object
153 154 155 |
# File 'lib/parse/object.rb', line 153 def array_add(field, value) array_op(field, Protocol::KEY_ADD, value) end |
#array_add_relation(field, value) ⇒ Object
157 158 159 |
# File 'lib/parse/object.rb', line 157 def array_add_relation(field, value) array_op(field, Protocol::KEY_ADD_RELATION, value) end |
#array_add_unique(field, value) ⇒ Object
165 166 167 |
# File 'lib/parse/object.rb', line 165 def array_add_unique(field, value) array_op(field, Protocol::KEY_ADD_UNIQUE, value) end |
#array_remove(field, value) ⇒ Object
169 170 171 |
# File 'lib/parse/object.rb', line 169 def array_remove(field, value) array_op(field, Protocol::KEY_REMOVE, value) end |
#array_remove_relation(field, value) ⇒ Object
161 162 163 |
# File 'lib/parse/object.rb', line 161 def array_remove_relation(field, value) array_op(field, Protocol::KEY_REMOVE_RELATION, value) end |
#decrement(field, amount = 1) ⇒ Object
Decrement the given field by an amount, which defaults to 1. Saves immediately to reflect decremented A synonym for increment(field, -amount).
192 193 194 |
# File 'lib/parse/object.rb', line 192 def decrement(field, amount = 1) increment(field, -amount) end |
#eql?(other) ⇒ Boolean Also known as: ==
24 25 26 |
# File 'lib/parse/object.rb', line 24 def eql?(other) Parse.object_pointer_equality?(self, other) end |
#get ⇒ Object
make it easier to deal with the ambiguity of whether you’re passed a pointer or object
43 44 45 |
# File 'lib/parse/object.rb', line 43 def get self end |
#hash ⇒ Object
29 30 31 |
# File 'lib/parse/object.rb', line 29 def hash Parse.object_pointer_hash(self) end |
#increment(field, amount = 1) ⇒ Object
Increment the given field by an amount, which defaults to 1. Saves immediately to reflect incremented
175 176 177 178 179 180 181 182 183 184 185 186 187 |
# File 'lib/parse/object.rb', line 175 def increment(field, amount = 1) # value = (self[field] || 0) + amount # self[field] = value # if !@parse_object_id # # TODO - warn that the object must be stored first # return nil # end body = { field => Parse::Increment.new(amount) }.to_json data = @client.request(uri, :put, body) parse data self end |
#inspect ⇒ Object
128 129 130 |
# File 'lib/parse/object.rb', line 128 def inspect "#{@class_name}:#{@parse_object_id} #{super}" end |
#new? ⇒ Boolean
47 48 49 |
# File 'lib/parse/object.rb', line 47 def new? self['objectId'].nil? end |
#parse_delete ⇒ Object
Delete the remote Parse API object.
146 147 148 149 150 151 |
# File 'lib/parse/object.rb', line 146 def parse_delete @client.delete uri if @parse_object_id clear self end |
#pointer ⇒ Object
37 38 39 |
# File 'lib/parse/object.rb', line 37 def pointer Parse::Pointer.new(rest_api_hash) unless new? end |
#refresh ⇒ Object
Update the fields of the local Parse object with the current values from the API.
134 135 136 137 138 139 140 141 142 143 |
# File 'lib/parse/object.rb', line 134 def refresh if @parse_object_id data = Parse.get(@class_name, @parse_object_id, @client) @op_fields = {} clear parse data if data end self end |
#rest_api_hash ⇒ Object
full REST api representation of object
103 104 105 |
# File 'lib/parse/object.rb', line 103 def rest_api_hash merge(Parse::Protocol::KEY_CLASS_NAME => class_name) end |
#safe_hash ⇒ Object
representation of object to send on saves
87 88 89 90 91 92 93 94 95 96 97 98 99 100 |
# File 'lib/parse/object.rb', line 87 def safe_hash Hash[map do |key, value| if Protocol::RESERVED_KEYS.include?(key) nil elsif value.is_a?(Hash) && value[Protocol::KEY_TYPE] == Protocol::TYPE_RELATION nil elsif value.nil? [key, Protocol::DELETE_OP] else [key, Parse.pointerize_value(value)] end end.compact] end |
#save ⇒ Object
Write the current state of the local object to the API. If the object has never been saved before, this will create a new object, otherwise it will update the existing stored object.
59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 |
# File 'lib/parse/object.rb', line 59 def save if @parse_object_id method = :put merge!(@op_fields) # use ops instead of our own view of the columns else method = :post end body = safe_hash.to_json data = @client.request(uri, method, body) if data # array ops can return mutated view of array which needs to be parsed object = Parse.parse_json(class_name, data) object = Parse.copy_client(@client, object) parse object end if @class_name == Parse::Protocol::CLASS_USER delete('password') delete(:username) delete(:password) end self end |
#should_call_to_h?(value) ⇒ Boolean
Handle the addition of Array#to_h in Ruby 2.1
108 109 110 |
# File 'lib/parse/object.rb', line 108 def should_call_to_h?(value) value.respond_to?(:to_h) && !value.is_a?(Array) end |
#to_h(*_a) ⇒ Object Also known as: as_json, to_hash
112 113 114 115 116 |
# File 'lib/parse/object.rb', line 112 def to_h(*_a) Hash[rest_api_hash.map do |key, value| [key, should_call_to_h?(value) ? value.to_h : value] end] end |
#to_json(*a) ⇒ Object
120 121 122 |
# File 'lib/parse/object.rb', line 120 def to_json(*a) to_h.to_json(*a) end |
#to_s ⇒ Object
124 125 126 |
# File 'lib/parse/object.rb', line 124 def to_s "#{@class_name}:#{@parse_object_id} #{super}" end |
#update_attributes(data = {}) ⇒ Object
51 52 53 54 |
# File 'lib/parse/object.rb', line 51 def update_attributes(data = {}) data.each_pair { |k, v| self[k] = v } save end |