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