Sha256: 274f42ce18b60d31fe7fe97bf5f8e7edc02f6508de50457714e7476d45538b51

Contents?: true

Size: 932 Bytes

Versions: 20

Compression:

Stored size: 932 Bytes

Contents

# rubocop: disable Metrics/ParameterLists

module Snaptime
  module RelationsBuilder
    def self.build_versioned_relation(klass, macro, name, scope = nil, options = {}, &extension)
      if scope.is_a?(Hash)
        options = scope
        scope   = nil
      end

      options[:primary_key] ||= (klass.versioned? ? :natural_id : klass.primary_key)

      versioned_scope = proc do
        rel = spawn.unscope(where: %i(valid_from valid_to))
        rel = rel.merge(scope) unless scope.nil?
        rel._at_explicit_snaptime(Snaptime.snaptime)
      end

      klass.send(macro, name, versioned_scope, options, &extension)

      reflection = klass.reflect_on_association(name)

      unless reflection.klass.versioned?
        fail Exceptions::AssociationTargetNotVersioned, reflection.klass
      end

      klass.versioned_associations = klass.versioned_associations.merge(
        name => reflection
      )
    end
  end
end

Version data entries

20 entries across 20 versions & 1 rubygems

Version Path
snaptime-22.0.0 lib/snaptime/relations_builder.rb
snaptime-21.0.0 lib/snaptime/relations_builder.rb
snaptime-0.3.0 lib/snaptime/relations_builder.rb
snaptime-0.2.0 lib/snaptime/relations_builder.rb
snaptime-0.0.20 lib/snaptime/relations_builder.rb
snaptime-0.0.19 lib/snaptime/relations_builder.rb
snaptime-0.0.18 lib/snaptime/relations_builder.rb
snaptime-0.0.17 lib/snaptime/relations_builder.rb
snaptime-0.0.16 lib/snaptime/relations_builder.rb
snaptime-0.0.15 lib/snaptime/relations_builder.rb
snaptime-0.0.14 lib/snaptime/relations_builder.rb
snaptime-0.0.13 lib/snaptime/relations_builder.rb
snaptime-0.0.12 lib/snaptime/relations_builder.rb
snaptime-0.0.11 lib/snaptime/relations_builder.rb
snaptime-0.0.10 lib/snaptime/relations_builder.rb
snaptime-0.0.9 lib/snaptime/relations_builder.rb
snaptime-0.0.8 lib/snaptime/relations_builder.rb
snaptime-0.0.7 lib/snaptime/relations_builder.rb
snaptime-0.0.6 lib/snaptime/relations_builder.rb
snaptime-0.0.1 lib/snaptime/relations_builder.rb