Sha256: 74fa008c15159c5854b16f4983c55c8f6ad7aa99beb38ff22b8373eaa6e22ab1

Contents?: true

Size: 912 Bytes

Versions: 6

Compression:

Stored size: 912 Bytes

Contents

module Mobility
  module Sequel
=begin

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

=end
    class ColumnChanges < Module
      # @param [Array<String>] attributes Backend attributes
      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
    end
  end
end

Version data entries

6 entries across 6 versions & 1 rubygems

Version Path
mobility-0.1.5 lib/mobility/sequel/column_changes.rb
mobility-0.1.4 lib/mobility/sequel/column_changes.rb
mobility-0.1.3 lib/mobility/sequel/column_changes.rb
mobility-0.1.2 lib/mobility/sequel/column_changes.rb
mobility-0.1.1 lib/mobility/sequel/column_changes.rb
mobility-0.1.0 lib/mobility/sequel/column_changes.rb