Module | Sequel::Plugins::Dirty::InstanceMethods
In: | lib/sequel/plugins/dirty.rb

### Methods

column_change column_changed? column_changes initial_value initial_values reset_column will_change_column

### Attributes

previous_changes | [R] | A hash of previous changes before the object was saved, in the same format as column_changes. Note that this is not necessarily the same as the columns that were used in the update statement.

### Public Instance methods

column_change(column)

An array with the initial value and the current value of the column, if the column has been changed. If the column has not been changed, returns nil.

      column_change(:name) # => ['Initial', 'Current']

[Source]

        # File lib/sequel/plugins/dirty.rb, line 62
    62:         def column_change(column)
    63:           [initial_value(column), send(column)] if column_changed?(column)
    64:         end

column_changed?(column)

Either true or false depending on whether the column has changed. Note that this is not exactly the same as checking if the column is in changed_columns, if the column was not set initially.

      column_changed?(:name) # => true

[Source]

        # File lib/sequel/plugins/dirty.rb, line 84
    84:         def column_changed?(column)
    85:           initial_values.has_key?(column)
    86:         end

column_changes()

A hash with column symbol keys and pairs of initial and current values for all changed columns.

      column_changes # => {:name => ['Initial', 'Current']}

[Source]

        # File lib/sequel/plugins/dirty.rb, line 70
    70:         def column_changes
    71:           h = {}
    72:           initial_values.each do |column, value|
    73:             h[column] = [value, send(column)]
    74:           end
    75:           h
    76:         end

initial_value(column)

The initial value of the given column. If the column value has not changed, this will be the same as the current value of the column.

      initial_value(:name) # => 'Initial'

[Source]

        # File lib/sequel/plugins/dirty.rb, line 93
    93:         def initial_value(column)
    94:           initial_values.fetch(column){send(column)}
    95:         end

initial_values()

A hash with column symbol keys and initial values.

      initial_values # {:name => 'Initial'}

[Source]

         # File lib/sequel/plugins/dirty.rb, line 100
    100:         def initial_values
    101:           @initial_values ||= {}
    102:         end

reset_column(column)

Reset the column to its initial value. If the column was not set initial, removes it from the values.

      reset_column(:name)
      name # => 'Initial'

[Source]

         # File lib/sequel/plugins/dirty.rb, line 109
    109:         def reset_column(column)
    110:           if initial_values.has_key?(column)
    111:             send("#{column}=""#{column}=", initial_values[column])
    112:           end
    113:           if missing_initial_values.include?(column)
    114:             values.delete(column)
    115:           end
    116:         end

will_change_column(column)

Manually specify that a column will change. This should only be used if you plan to modify a column value in place, which is not recommended.

      will_change_column(:name)
      name.gsub(/i/i, 'o')
      column_change(:name) # => ['Initial', 'onotoal']

[Source]

         # File lib/sequel/plugins/dirty.rb, line 124
    124:         def will_change_column(column)
    125:           changed_columns << column unless changed_columns.include?(column)
    126:           check_missing_initial_value(column)
    127:
    128:           value = if initial_values.has_key?(column)
    129:             initial_values[column]
    130:           else
    131:             send(column)
    132:           end
    133:
    134:           initial_values[column] = if value && value != true && value.respond_to?(:clone)
    135:             begin
    136:               value.clone
    137:             rescue TypeError
    138:               value
    139:             end
    140:           else
    141:             value
    142:           end
    143:         end

[Validate]