Module: ActiveRecord::Delegation::ClassSpecificRelation

Extended by:
ActiveSupport::Concern
Defined in:
lib/active_record/relation/delegation.rb

Overview

:nodoc:

Defined Under Namespace

Modules: ClassMethods

Dynamic Method Handling

This class handles dynamic methods through the method_missing method

#method_missing(method, *args, &block) ⇒ Object (private)


81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
# File 'lib/active_record/relation/delegation.rb', line 81

def method_missing(method, *args, &block)
  if @klass.respond_to?(method)
    self.class.delegate_to_scoped_klass(method)
    scoping { @klass.public_send(method, *args, &block) }
  elsif @delegate_to_klass && @klass.respond_to?(method, true)
    ActiveSupport::Deprecation.warn \
      "Delegating missing #{method} method to #{@klass}. " \
      "Accessibility of private/protected class methods in :scope is deprecated and will be removed in Rails 6.0."
    @klass.send(method, *args, &block)
  elsif arel.respond_to?(method)
    ActiveSupport::Deprecation.warn \
      "Delegating #{method} to arel is deprecated and will be removed in Rails 6.0."
    arel.public_send(method, *args, &block)
  else
    super
  end
end