123456789_123456789_123456789_123456789_123456789_

Module: ActiveRecord::AttributeMethods::Read

Relationships & Source Files
Super Chains via Extension / Inclusion / Inheritance
Class Chain:
Defined in: activerecord/lib/active_record/attribute_methods/read.rb

Class Method Summary

::ActiveSupport::Concern - Extended

class_methods

Define class methods from given block.

included

Evaluate given block in context of base class, so that you can write class macros here.

prepended

Evaluate given block in context of base class, so that you can write class macros here.

Instance Method Summary

Instance Method Details

#read_attribute(attr_name, &block)

Returns the value of the attribute identified by attr_name after it has been type cast. For example, a date attribute will cast “2004-12-12” to Date.new(2004, 12, 12). (For information about specific type casting behavior, see the types under ::ActiveModel::Type.)

[ GitHub ]

  
# File 'activerecord/lib/active_record/attribute_methods/read.rb', line 29

def read_attribute(attr_name, &block)
  name = attr_name.to_s
  name = self.class.attribute_aliases[name] || name

  return @attributes.fetch_value(name, &block) unless name == "id" && @primary_key

  if self.class.composite_primary_key?
    @attributes.fetch_value("id", &block)
  else
    if @primary_key != "id"
      ActiveRecord.deprecator.warn(<<-MSG.squish)
        Using read_attribute(:id) to read the primary key value is deprecated.
        Use #id instead.
      MSG
    end
    @attributes.fetch_value(@primary_key, &block)
  end
end