module TinyDyno::Persistable
Public Instance Methods
save(options = {})
click to toggle source
# File lib/tiny_dyno/persistable.rb, line 5 def save(options = {}) unless options.has_key?(:validate) && options[:validate] == false return false unless self.valid? end remove_empty_attributes if new_record? if request_put_item(options) changes_applied @new_record = nil return true else return false end else if request_replace_item(options) changes_applied return true else return false end end end
Private Instance Methods
build_item_request_entries()
click to toggle source
# File lib/tiny_dyno/persistable.rb, line 56 def build_item_request_entries item_entries = {} attributes.each { |k,v| item_entries[k] = TinyDyno::Adapter.aws_attribute(field_type: fields[k].options[:type], value: v) } item_entries end
build_put_item_request()
click to toggle source
# File lib/tiny_dyno/persistable.rb, line 49 def build_put_item_request { table_name: self.class.table_name, item: build_item_request_entries } end
remove_empty_attributes()
click to toggle source
# File lib/tiny_dyno/persistable.rb, line 30 def remove_empty_attributes self.class.fields @attributes.each_pair do |k,v| next unless self.class.fields[k].options[:type].to_s == 'String' next unless v.respond_to?(:to_s) @attributes.delete(k) if v.to_s.nil? or v.to_s.empty? end end
request_put_item(options)
click to toggle source
# File lib/tiny_dyno/persistable.rb, line 39 def request_put_item(options) request = request_as_new_record(build_put_item_request) return(TinyDyno::Adapter.put_item(put_item_request: request)) end
request_replace_item(options)
click to toggle source
# File lib/tiny_dyno/persistable.rb, line 44 def request_replace_item(options) request = build_put_item_request return(TinyDyno::Adapter.put_item(put_item_request: request)) end