lib/lhs/concerns/record/includes.rb in lhs-5.7.1 vs lib/lhs/concerns/record/includes.rb in lhs-6.0.0

- old
+ new

@@ -3,25 +3,38 @@ class LHS::Record module Includes extend ActiveSupport::Concern + included do + cattr_accessor :including, :referencing + end + module ClassMethods - def including - @including + def includes(*args) + class_clone_factory(args).tap do |class_clone| + class_clone.including = unfold_args(args) + end end - def including=(including) - @including = including + def references(*args) + class_clone_factory(args).tap do |class_clone| + class_clone.referencing = unfold_args(args) + end end - def includes(*args) + private + + def unfold_args(args) + args.size == 1 ? args[0] : args + end + + def class_clone_factory(args) name = "#{self}#{args.object_id}" constant = Object.const_set(name.demodulize, self.dup) # rubocop:disable Style/RedundantSelf class_clone = constant class_clone.endpoints = endpoints class_clone.mapping = mapping - class_clone.including = args.size == 1 ? args[0] : args class_clone end end end end