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