Module: FastVersioning::FastVersioned::ClassMethods

Defined in:
lib/fast_versioning/fast_versioned.rb

Instance Method Summary collapse

Instance Method Details

#has_fast_versions(*attributes, **meta) ⇒ Object



10
11
12
13
14
15
16
17
18
19
20
21
22
# 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