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 211
def ===(object)
  object.is_a?(self)
end
allocate()
# File activerecord/lib/active_record/core.rb, line 110
def allocate
  define_attribute_methods
  super
end
find(*ids)
# File activerecord/lib/active_record/core.rb, line 124
def find(*ids)
  # We don't have cache keys for this stuff yet
  return super unless ids.length == 1
  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`"
  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
end
find_by(*args)
# File activerecord/lib/active_record/core.rb, line 153
def find_by(*args)
  return super if current_scope || args.length > 1 || reflect_on_all_aggregations.any?

  hash = args.first

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

  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)
  end
end
generated_association_methods()
# File activerecord/lib/active_record/core.rb, line 186
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 119
def inherited(child_class)
  child_class.initialize_find_by_cache
  super
end
initialize_find_by_cache()
# File activerecord/lib/active_record/core.rb, line 115
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 180
def initialize_generated_modules
  super

  generated_association_methods
end
inspect()

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

# File activerecord/lib/active_record/core.rb, line 195
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