add OrvosBase#dup, offload some filtering to server
authorTom Clegg <tom@clinicalfuture.com>
Fri, 18 Jan 2013 23:52:13 +0000 (15:52 -0800)
committerTom Clegg <tom@clinicalfuture.com>
Fri, 18 Jan 2013 23:52:13 +0000 (15:52 -0800)
app/models/orvos_base.rb

index 586a1de1c78a5b6319b458c8a2b2690177f62056..cd31bd4503c134a3f99a6a124911c18a8eb67083 100644 (file)
@@ -30,11 +30,10 @@ class OrvosBase < ActiveRecord::Base
     new(api('/' + uuid))
   end
   def self.where(cond)
-    all.select do |o|
-      0 == cond.select do |k,v|
-        o.send(k) != v
-      end.size
-    end
+    self.unpack_api_response(self.api '', {
+                               _method: 'GET',
+                               where: cond
+                             })
   end
   def save
     obdata = {}
@@ -110,8 +109,18 @@ class OrvosBase < ActiveRecord::Base
     end
     @all_metadata = nil
   end
+  def dup
+    super.forget_uuid!
+  end
 
   protected
+
+  def forget_uuid!
+    self.uuid = nil
+    @etag = nil
+    self
+  end
+
   def self.api(action, data=nil, o={})
     dataargs = []
     if !data.nil?