edge badge
Methods
#
A
F
G
I
Instance Public methods
===(object)

Overwrite the default class equality method to provide support for association proxies.

# File activerecord/lib/active_record/core.rb, line 227
def ===(object)
  object.is_a?(self)
end
allocate()
# File activerecord/lib/active_record/core.rb, line 112
def allocate
  define_attribute_methods
  super
end
find(*ids)
# File activerecord/lib/active_record/core.rb, line 126
      def find(*ids)
        # We don't have cache keys for this stuff yet
        return super unless ids.length == 1
        # Allow symbols to super to maintain compatibility for deprecated finders until Rails 5
        return super if ids.first.kind_of?(Symbol)
        return super if block_given? ||
                        primary_key.nil? ||
                        default_scopes.any? ||
                        columns_hash.include?(inheritance_column) ||
                        ids.first.kind_of?(Array)

        id  = ids.first
        if ActiveRecord::Base === id
          id = id.id
          ActiveSupport::Deprecation.warn("            You are passing an instance of ActiveRecord::Base to `find`.
            Please pass the id of the object by calling `.id`
".squish)
        end
        key = primary_key

        s = find_by_statement_cache[key] || find_by_statement_cache.synchronize {
          find_by_statement_cache[key] ||= StatementCache.create(connection) { |params|
            where(key => params.bind).limit(1)
          }
        }
        record = s.execute([id], self, connection).first
        unless record
          raise RecordNotFound, "Couldn't find #{name} with '#{primary_key}'=#{id}"
        end
        record
      rescue RangeError
        raise RecordNotFound, "Couldn't find #{name} with an out of range value for '#{primary_key}'"
      end
find_by(*args)
# File activerecord/lib/active_record/core.rb, line 161
def find_by(*args)
  return super if current_scope || !(Hash === args.first) || reflect_on_all_aggregations.any?
  return super if default_scopes.any?

  hash = args.first

  return super if hash.values.any? { |v|
    v.nil? || Array === v || Hash === v
  }

  # We can't cache Post.find_by(author: david) ...yet
  return super unless hash.keys.all? { |k| columns_hash.has_key?(k.to_s) }

  key  = hash.keys

  klass = self
  s = find_by_statement_cache[key] || find_by_statement_cache.synchronize {
    find_by_statement_cache[key] ||= StatementCache.create(connection) { |params|
      wheres = key.each_with_object({}) { |param,o|
        o[param] = params.bind
      }
      klass.where(wheres).limit(1)
    }
  }
  begin
    s.execute(hash.values, self, connection).first
  rescue TypeError => e
    raise ActiveRecord::StatementInvalid.new(e.message, e)
  rescue RangeError
    nil
  end
end
find_by!(*args)
# File activerecord/lib/active_record/core.rb, line 194
def find_by!(*args)
  find_by(*args) or raise RecordNotFound.new("Couldn't find #{name}")
end
generated_association_methods()
# File activerecord/lib/active_record/core.rb, line 202
def generated_association_methods
  @generated_association_methods ||= begin
    mod = const_set(:GeneratedAssociationMethods, Module.new)
    include mod
    mod
  end
end
inherited(child_class)
# File activerecord/lib/active_record/core.rb, line 121
def inherited(child_class)
  child_class.initialize_find_by_cache
  super
end
initialize_find_by_cache()
# File activerecord/lib/active_record/core.rb, line 117
def initialize_find_by_cache
  self.find_by_statement_cache = {}.extend(Mutex_m)
end
initialize_generated_modules()
# File activerecord/lib/active_record/core.rb, line 198
def initialize_generated_modules
  generated_association_methods
end
inspect()

Returns a string like 'Post(id:integer, title:string, body:text)'

# File activerecord/lib/active_record/core.rb, line 211
def inspect
  if self == Base
    super
  elsif abstract_class?
    "#{super}(abstract)"
  elsif !connected?
    "#{super} (call '#{super}.connection' to establish a connection)"
  elsif table_exists?
    attr_list = columns.map { |c| "#{c.name}: #{c.type}" } * ', '
    "#{super}(#{attr_list})"
  else
    "#{super}(Table doesn't exist)"
  end
end