module HuggORM::Persistence::InstanceMethods
Attributes
data[RW]
uuid[RW]
Public Class Methods
new(data = {})
click to toggle source
# File lib/hugg_orm/persistence.rb, line 131 def initialize(data = {}) @data = {} update_attributes(data) unless data.empty? end
Public Instance Methods
<=>(o)
click to toggle source
# File lib/hugg_orm/persistence.rb, line 216 def <=>(o) o.kind_of?(self.class) && @data == o.data ? 0 : nil end
created?()
click to toggle source
# File lib/hugg_orm/persistence.rb, line 196 def created? @state == :created end
destroy()
click to toggle source
# File lib/hugg_orm/persistence.rb, line 165 def destroy if self.class.destroy(key) @data = {} @state = :destroyed end self end
destroyed?()
click to toggle source
# File lib/hugg_orm/persistence.rb, line 188 def destroyed? @state == :destroyed end
dump()
click to toggle source
# File lib/hugg_orm/persistence.rb, line 200 def dump str = "#{self.class.name}:\n" @data.sort.each do |field, value| str << " #{field}: #{value}\n" end str end
fetch(*args)
click to toggle source
# File lib/hugg_orm/persistence.rb, line 208 def fetch(*args) @data.send(:fetch, *args) end
has_field?(field)
click to toggle source
# File lib/hugg_orm/persistence.rb, line 212 def has_field?(field) @data.has_key?(field) end
key()
click to toggle source
# File lib/hugg_orm/persistence.rb, line 136 def key @data[self.class.key_field] end
save()
click to toggle source
# File lib/hugg_orm/persistence.rb, line 174 def save updated_data = self.class.where("#{self.class.primary_key} = ?", [key]).update(@data, true) unless updated_data.empty? @data = updated_data.first @state = :updated else self.class.new_query.insert(@data) @state = :created end self end
set_id()
click to toggle source
# File lib/hugg_orm/persistence.rb, line 140 def set_id # Set id based on key field, but only if id isn't already set and # the key method has been overridden and returns data. @data[self.class.key_field] = key if @data[self.class.key_field].nil? && key end
update_attributes(update_data)
click to toggle source
# File lib/hugg_orm/persistence.rb, line 146 def update_attributes(update_data) # Remove fields not set to be included unless self.class.include_fields.empty? update_data = self.class.include_fields.each_with_object({}) do |key, hash| hash[key] = update_data[key] if update_data.has_key? key end end # Update all fields unless they have been excluded update_data.each do |field, value| @data[field] = value unless self.class.exclude_fields.include?(field) end # Set id based on key method. set_id self end
updated?()
click to toggle source
# File lib/hugg_orm/persistence.rb, line 192 def updated? @state == :updated end