class Answers::BaseModel
Public Class Methods
all()
click to toggle source
# File lib/answers/base_model.rb, line 39 def self.all response = Answers.client.get(Protocol.uri(resource_name)) items = response[hash_key] items.map {|i| new(i)} end
find(id)
click to toggle source
# File lib/answers/base_model.rb, line 24 def self.find(id) response = Answers.client.get(Protocol.uri(resource_name, id)) if response.has_key?('status') if response['status'] return nil end end item_hash = response[hash_key].first item = new(item_hash) item end
hash_key()
click to toggle source
# File lib/answers/base_model.rb, line 16 def self.hash_key self.resource_name.to_s.pluralize end
resource_name()
click to toggle source
# File lib/answers/base_model.rb, line 8 def self.resource_name to_s.demodulize.downcase.to_sym end
Public Instance Methods
delete()
click to toggle source
# File lib/answers/base_model.rb, line 59 def delete raise Answers::Error.new("Cannot delete unsaved object.") if new? response = Answers.client.delete(Protocol.uri(resource_name, @id)) response end
hash_key()
click to toggle source
# File lib/answers/base_model.rb, line 20 def hash_key self.class.hash_key end
new?()
click to toggle source
# File lib/answers/base_model.rb, line 4 def new? @id.nil? end
resource_name()
click to toggle source
# File lib/answers/base_model.rb, line 12 def resource_name self.class.resource_name end
save()
click to toggle source
# File lib/answers/base_model.rb, line 46 def save body = attributes.delete_if {|k,v| v.nil?} path = new? ? Protocol.uri(resource_name) : Protocol.uri(resource_name, @id) method = new? ? :post : :put response = Answers.client.send(method, path, body) item_hash = response[hash_key].first update_attributes!(item_hash) self end
Private Instance Methods
update_attribute!(attribute_name, attribute_value)
click to toggle source
# File lib/answers/base_model.rb, line 74 def update_attribute!(attribute_name, attribute_value) instance_variable_set("@#{attribute_name}", attribute_value) end
update_attributes!(attributes)
click to toggle source
# File lib/answers/base_model.rb, line 68 def update_attributes!(attributes) attributes.each_pair do |key, value| update_attribute!(key.to_sym, value) end end