lib/supermodel/base.rb in supermodel-0.1.3 vs lib/supermodel/base.rb in supermodel-0.1.4

- old
+ new

@@ -25,11 +25,11 @@ item && item.dup end def find_all_by_attribute(name, value) #:nodoc: items = records.values.select {|r| r.send(name) == value } - collection.new(items) + collection.new(items.deep_dup) end def raw_find(id) #:nodoc: records[id] || raise(UnknownRecord, "Couldn't find #{self.name} with ID=#{id}") end @@ -58,13 +58,17 @@ def count records.length end def all - collection.new(records.values) + collection.new(records.values.deep_dup) end + def select(&block) + collection.new(records.values.select(&block).deep_dup) + end + def update(id, atts) find(id).update_attributes(atts) end def destroy(id) @@ -181,12 +185,19 @@ def exists? !new? end def load(attributes) #:nodoc: - attributes.each {|(name, value)| + attributes.each do |(name, value)| self.send("#{name}=".to_sym, value) - } + end + end + + def reload + return self if new? + item = self.class.find(id) + load(item.attributes) + return self end def update_attribute(name, value) self.send("#{name}=".to_sym, value) self.save \ No newline at end of file