module SparkApi::Models::Concerns::Savable
Public Instance Methods
create!(arguments = {})
click to toggle source
# File lib/spark_api/models/concerns/savable.rb, line 23 def create!(arguments = {}) results = connection.post self.path, post_data.merge(params_for_save), arguments update_attributes_after_create(results.first) reset_dirty params_for_save.clear true end
params_for_save()
click to toggle source
extra params to be passed when saving
# File lib/spark_api/models/concerns/savable.rb, line 45 def params_for_save @params_for_save ||= {} end
post_data()
click to toggle source
update/create hash (can be overridden)
# File lib/spark_api/models/concerns/savable.rb, line 50 def post_data { resource_pluralized => [ attributes ] } end
save(arguments = {})
click to toggle source
# File lib/spark_api/models/concerns/savable.rb, line 7 def save(arguments = {}) self.errors = [] # clear the errors hash begin return save!(arguments) rescue BadResourceRequest => e self.errors << {:code => e.code, :message => e.message} SparkApi.logger.warn("Failed to save resource #{self}: #{e.message}") rescue NotFound => e SparkApi.logger.error("Failed to save resource #{self}: #{e.message}") end false end
save!(arguments = {})
click to toggle source
# File lib/spark_api/models/concerns/savable.rb, line 19 def save!(arguments = {}) persisted? ? update!(arguments) : create!(arguments) end
update!(arguments = {})
click to toggle source
# File lib/spark_api/models/concerns/savable.rb, line 36 def update!(arguments = {}) return true unless changed? && persisted? connection.put resource_uri, dirty_attributes, arguments reset_dirty params_for_save.clear true end
update_attributes(attrs = {}, options = {})
click to toggle source
# File lib/spark_api/models/concerns/savable.rb, line 31 def update_attributes(attrs = {}, options = {}) load(attrs, options) save! end
Private Instance Methods
update_attributes_after_create(result)
click to toggle source
# File lib/spark_api/models/concerns/savable.rb, line 56 def update_attributes_after_create(result) attributes['Id'] = result['Id'] ? result['Id'] : parse_id(result['ResourceUri']) result.delete('Id') attributes.merge! result end