class Mongoid::Errors::InvalidField

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

Public Class Methods

new(klass, name) click to toggle source

Create the new error.

@example Create the error.

InvalidField.new(person, :crazy_method_name)

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

Calls superclass method
# File lib/mongoid/errors/invalid_field.rb, line 18
def initialize(klass, name)
  super(
    compose_message(
      "invalid_field",
      {
        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 method.

@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 3.0.0

# File lib/mongoid/errors/invalid_field.rb, line 60
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 3.0.0

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