Class: Mobility::Sequel::ColumnChanges

Inherits:
Module
  • Object
show all
Defined in:
lib/mobility/sequel/column_changes.rb

Overview

Internal class used to force Sequel model to notice changes when mobility_set is called.

Instance Method Summary collapse

Constructor Details

#initialize(attributes) ⇒ ColumnChanges

Returns a new instance of ColumnChanges.

Parameters:

  • attributes (Array<String>)

    Backend attributes



11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
# File 'lib/mobility/sequel/column_changes.rb', line 11

def initialize(attributes)
  @attributes = attributes

  define_method :mobility_set do |attribute, value, locale: Mobility.locale|
    if attributes.include?(attribute)
      column = attribute.to_sym
      column_with_locale = :"#{attribute}_#{locale}"
      if mobility_get(attribute) != value
        @changed_columns << column_with_locale if !changed_columns.include?(column_with_locale)
        @changed_columns << column             if !changed_columns.include?(column)
      end
    end
    super(attribute, value, locale: locale)
  end
  private :mobility_set
end