module Couchbase::Model::Dirty
Public Instance Methods
create_with_dirty(options = {})
click to toggle source
# File lib/couchbase/model/dirty.rb, line 66 def create_with_dirty(options = {}) create_without_dirty(options).tap do |value| capture_previous_changes if value end end
reload()
click to toggle source
This is until my change review.couchbase.org/#/c/29745/ is in and released.
# File lib/couchbase/model/dirty.rb, line 41 def reload raise Couchbase::Error::MissingId, 'missing id attribute' unless @id pristine = model.find(@id) update_attributes(pristine.attributes) @meta[:cas] = pristine.meta[:cas] clean! self end
save_if_changed(options = {})
click to toggle source
FIXME Return value for “Fail” and “didn’t try” is the same
# File lib/couchbase/model/dirty.rb, line 73 def save_if_changed(options = {}) save if changed? end
save_with_dirty(options = {})
click to toggle source
# File lib/couchbase/model/dirty.rb, line 60 def save_with_dirty(options = {}) save_without_dirty(options).tap do |value| capture_previous_changes if value end end
update_attributes_with_dirty(attrs)
click to toggle source
# File lib/couchbase/model/dirty.rb, line 50 def update_attributes_with_dirty(attrs) begin @_ignore_dirty = attrs.delete(:_ignore_dirty) update_attributes_without_dirty(attrs) ensure @_ignore_dirty = false end end
write_attribute(name, value)
click to toggle source
# File lib/couchbase/model/dirty.rb, line 33 def write_attribute(name, value) send "#{name}_will_change!" unless @_ignore_dirty || send(name) == value @_attributes[name] = value end
Private Instance Methods
attribute_will_change!(attr)
click to toggle source
# File lib/couchbase/model/dirty.rb, line 94 def attribute_will_change!(attr) begin value = __send__(attr) value = DeepCopier.new(value).copy rescue TypeError, NoMethodError end changed_attributes[attr] = value end
capture_previous_changes()
click to toggle source
# File lib/couchbase/model/dirty.rb, line 78 def capture_previous_changes @previously_changed = changes @changed_attributes.clear end
clean!()
click to toggle source
# File lib/couchbase/model/dirty.rb, line 83 def clean! @changed_attributes.try(:clear) @previously_changed.try(:clear) end
previous_attribute(attr)
click to toggle source
# File lib/couchbase/model/dirty.rb, line 88 def previous_attribute(attr) return unless previous_changes previous_changes[attr.to_s].try :first end