lib/cfoundry/v2/model.rb in cfoundry-0.3.2 vs lib/cfoundry/v2/model.rb in cfoundry-0.3.3

- old
+ new

@@ -15,10 +15,11 @@ define_method(:"#{name}=") { |val| @manifest ||= {} @manifest[:entity] ||= {} @manifest[:entity][name] = val + @diff[name] = val } end def to_one(name, opts = {}) obj = opts[:as] || name @@ -36,11 +37,12 @@ } define_method(:"#{name}=") { |x| @manifest ||= {} @manifest[:entity] ||= {} - @manifest[:entity][:"#{name}_guid"] = x.id + @manifest[:entity][:"#{name}_guid"] = + @diff[:"#{name}_guid"] = x.id } end def to_many(plural, opts = {}) singular = plural.to_s.sub(/s$/, "").to_sym @@ -76,21 +78,23 @@ } define_method(:"#{plural}=") { |xs| @manifest ||= {} @manifest[:entity] ||= {} - @manifest[:entity][:"#{singular}_guids"] = xs.collect(&:id) + @manifest[:entity][:"#{singular}_guids"] = + @diff[:"#{singular}_guids"] = xs.collect(&:id) } end end attr_reader :id def initialize(id, client, manifest = nil) @id = id @client = client @manifest = manifest + @diff = {} end def manifest # inline depth of 2 for fewer requests @manifest ||= @client.base.send(object_name, @id, 2) @@ -116,14 +120,11 @@ @id = @manifest[:metadata][:guid] true end - def update!(diff = nil) - @client.base.send( - :"update_#{object_name}", - @id, - diff || manifest[:entity]) + def update!(diff = @diff) + @client.base.send(:"update_#{object_name}", @id, diff) @manifest = nil end def delete!