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)



111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
# File 'lib/active_record/relation/delegation.rb', line 111

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