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