module FastVersioning::FastVersioned::ClassMethods

Public Instance Methods

has_fast_versions(*attributes, **meta) click to toggle source
# File lib/fast_versioning/fast_versioned.rb, line 10
def has_fast_versions(*attributes, **meta)
  define_method :fast_version_for do
    processed_meta = *meta.deep_dup.tap do |item|
      item.values.each do |v|
        v.each { |i,j| v[i] = j.call(self) if j.respond_to?(:call) }
      end
    end

    (attributes + processed_meta).map do |tracked|
      FastVersioning::TrackedAttribute.new(*tracked)
    end
  end
end