class RuboCop::Cop::Rails::ReflectionClassName

has_many :accounts, class_name: ‘Account’
# good
has_many :accounts, class_name: Account.name
has_many :accounts, class_name: Account
# bad
@example
constant or method return value specified to ‘class_name` is a string.
It is marked as unsafe because it cannot be determined whether
the definition of a reflection is a string.
This cop checks if the value of the option `class_name`, in

def on_send(node)

def on_send(node)
  association_with_reflection(node) do |reflection_class_name|
    add_offense(reflection_class_name.loc.expression)
  end
end

def reflection_class_value?(class_value)

def reflection_class_value?(class_value)
  if class_value.send_type?
    !class_value.method?(:to_s) || class_value.receiver.const_type?
  else
    !ALLOWED_REFLECTION_CLASS_TYPES.include?(class_value.type)
  end
end