class Mongoid::Errors::InvalidRelation

This error is raised when trying to create an association that conflicts with an already defined method.

@since 6.0.0

Public Class Methods

new(klass, name) click to toggle source

Create the new error.

@example Create the error.

InvalidRelation.new(person, :crazy_relation_name)

@param [ Class ] klass The document class. @param [ Symbol ] name The method name.

Calls superclass method
# File lib/mongoid/errors/invalid_relation.rb, line 20
def initialize(klass, name)
  super(
      compose_message(
          "invalid_relation",
          {
              name: name,
              origin: origin(klass, name),
              file: location(klass, name)[0],
              line: location(klass, name)[1]
          }
      )
  )
end

Private Instance Methods

location(klass, name) click to toggle source

Get the location of the association definition.

@example Get the location of the method on the filesystem.

error.location(Person, :crazy_method_name)

@param [ Class ] klass The document class. @param [ Symbol ] name The method name.

@return [ Array<String, Integer> ] The location of the method.

@since 6.0.0

# File lib/mongoid/errors/invalid_relation.rb, line 62
def location(klass, name)
  @location ||=
      (klass.instance_method(name).source_location || [ "Unknown", 0 ])
end
origin(klass, name) click to toggle source

Get the queryable of the method.

@example Get the originating class or module.

error.queryable(Person, :crazy_method_name)

@param [ Class ] klass The document class. @param [ Symbol ] name The method name.

@return [ Class, Module ] The originating class or module.

@since 6.0.0

# File lib/mongoid/errors/invalid_relation.rb, line 47
def origin(klass, name)
  klass.instance_method(name).owner
end