Sha256: f5823b6c62da0911acbe91f82fbaf172e2b8375981a0ac78bf80ff17ce4f44f5

Contents?: true

Size: 955 Bytes

Versions: 13

Compression:

Stored size: 955 Bytes

Contents

class Card
  def self.define_dirty_methods field
    define_method "#{field}_before_act" do
      attribute_before_act field
    end

    define_method "#{field}_is_changing?" do
      attribute_is_changing? field
    end
  end

  [:name, :db_content, :trash, :type_id].each do |field|
    define_dirty_methods field
  end

  def attribute_before_act attr
    if saved_change_to_attribute? attr
      attribute_before_last_save attr
    elsif will_save_change_to_attribute? attr
      mutations_from_database.changed_values[attr]
    elsif not_in_callback?
      attribute_was attr
    else
      _read_attribute attr
    end
  end

  def not_in_callback? # or in integrate_with_delay stage
    mutations_before_last_save.equal?(mutations_from_database)
  end

  def attribute_is_changing? attr
    if not_in_callback?
      attribute_changed? attr
    else
      saved_change_to_attribute?(attr) || will_save_change_to_attribute?(attr)
    end
  end
end

Version data entries

13 entries across 13 versions & 1 rubygems

Version Path
card-1.96.8 lib/card/dirty.rb
card-1.96.7 lib/card/dirty.rb
card-1.96.6 lib/card/dirty.rb
card-1.96.5 lib/card/dirty.rb
card-1.96.4 lib/card/dirty.rb
card-1.96.3 lib/card/dirty.rb
card-1.96.2 lib/card/dirty.rb
card-1.96.1 lib/card/dirty.rb
card-1.96.0 lib/card/dirty.rb
card-1.95.3 lib/card/dirty.rb
card-1.95.2 lib/card/dirty.rb
card-1.95.1 lib/card/dirty.rb
card-1.95.0 lib/card/dirty.rb