mirror of
https://github.com/rails/rails.git
synced 2022-11-09 12:12:34 -05:00
f936a1f100
Signed-off-by: Joshua Peek <josh@joshpeek.com>
37 lines
1.1 KiB
Ruby
37 lines
1.1 KiB
Ruby
module ActiveRecord
|
|
module Attributes
|
|
|
|
# Returns true if the given attribute is in the attributes hash
|
|
def has_attribute?(attr_name)
|
|
_attributes.key?(attr_name)
|
|
end
|
|
|
|
# Returns an array of names for the attributes available on this object sorted alphabetically.
|
|
def attribute_names
|
|
_attributes.keys.sort!
|
|
end
|
|
|
|
# Returns a hash of all the attributes with their names as keys and the values of the attributes as values.
|
|
def attributes
|
|
attributes = _attributes.dup
|
|
attributes.typecast! unless _attributes.frozen?
|
|
attributes.to_h
|
|
end
|
|
|
|
protected
|
|
|
|
# Not to be confused with the public #attributes method, which returns a typecasted Hash.
|
|
def _attributes
|
|
@attributes
|
|
end
|
|
|
|
def initialize_attribute_store(merge_attributes = nil)
|
|
@attributes = ActiveRecord::Attributes::Store.new
|
|
@attributes.merge!(merge_attributes) if merge_attributes
|
|
@attributes.types.merge!(self.class.attribute_types)
|
|
@attributes.aliases.merge!('id' => self.class.primary_key) unless 'id' == self.class.primary_key
|
|
@attributes
|
|
end
|
|
|
|
end
|
|
end
|