Sha256: f943401be5951764a0de7fa4e8dda8a6e04c2ab87e84014ac345de10e993f4db

Contents?: true

Size: 713 Bytes

Versions: 2

Compression:

Stored size: 713 Bytes

Contents

module AssignableValues
  module ActiveRecord
    module Restriction
      class StoreAccessorAttribute < ScalarAttribute

        private

        def store_identifier
          @model.stored_attributes.find { |_, attrs| attrs.include?(property.to_sym) }&.first
        end

        def value_was_method
          :"#{store_identifier}_was"
        end

        def value_was(record)
          accessor = if record.respond_to?(:attribute_in_database) # Rails >= 5.1
            record.attribute_in_database(:"#{store_identifier}")
          else # Rails <= 5.0
            record.send(value_was_method)
          end

          accessor.with_indifferent_access[property]
        end

      end
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
assignable_values-1.1.1 lib/assignable_values/active_record/restriction/store_accessor_attribute.rb
assignable_values-1.1.0 lib/assignable_values/active_record/restriction/store_accessor_attribute.rb