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