Sha256: af7b5937bab5551597c99805d89e8337c443ec06476edecfd495d325bd26b1f3

Contents?: true

Size: 803 Bytes

Versions: 6

Compression:

Stored size: 803 Bytes

Contents

require_relative 'acts_as_trackable/version'
require_relative 'acts_as_trackable/trackable'
require_relative 'acts_as_trackable/modifier'

module ActsAsTrackable
  class Error < StandardError; end

  extend ActiveSupport::Concern

  included do
    class_attribute :trackable_column
  end

  class_methods do
    def acts_as_trackable(column_name = :id)
      self.trackable_column = column_name
      validate_trackable_column
      include Trackable
    end

    def acts_as_modifier
      include Modifier
    end

    private

    def validate_trackable_column
      return if column_names.include?(trackable_column.to_s)

      raise ArgumentError, "Column '#{trackable_column}' does not exist in the table"
    end
  end
end

ActiveSupport.on_load(:active_record) do
  include ActsAsTrackable
end

Version data entries

6 entries across 6 versions & 1 rubygems

Version Path
acts_as_trackable-0.2.3 lib/acts_as_trackable.rb
acts_as_trackable-0.2.2 lib/acts_as_trackable.rb
acts_as_trackable-0.2.1 lib/acts_as_trackable.rb
acts_as_trackable-0.2.0 lib/acts_as_trackable.rb
acts_as_trackable-0.1.1 lib/acts_as_trackable.rb
acts_as_trackable-0.1.0 lib/acts_as_trackable.rb