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!