Module: ActiveRecord::AttributeMethods::PrimaryKey
- Extended by:
- ActiveSupport::Concern
- Defined in:
- lib/active_record/attribute_methods/primary_key.rb
Overview
Active Record Attribute Methods Primary Key
Defined Under Namespace
Modules: ClassMethods
Instance Method Summary collapse
-
#id ⇒ Object
Returns the primary key column’s value.
-
#id=(value) ⇒ Object
Sets the primary key column’s value.
-
#id? ⇒ Boolean
Queries the primary key column’s value.
-
#id_before_type_cast ⇒ Object
Returns the primary key column’s value before type cast.
-
#id_for_database ⇒ Object
:nodoc:.
-
#id_in_database ⇒ Object
Returns the primary key column’s value from the database.
-
#id_was ⇒ Object
Returns the primary key column’s previous value.
-
#primary_key_values_present? ⇒ Boolean
:nodoc:.
-
#to_key ⇒ Object
Returns this record’s primary key value wrapped in an array if one is available.
Instance Method Details
#id ⇒ Object
Returns the primary key column’s value. If the primary key is composite, returns an array of the primary key column values.
20 21 22 23 24 |
# File 'lib/active_record/attribute_methods/primary_key.rb', line 20 def id return _read_attribute(@primary_key) unless @primary_key.is_a?(Array) @primary_key.map { |pk| _read_attribute(pk) } end |
#id=(value) ⇒ Object
Sets the primary key column’s value. If the primary key is composite, raises TypeError when the set value not enumerable.
34 35 36 37 38 39 40 41 |
# File 'lib/active_record/attribute_methods/primary_key.rb', line 34 def id=(value) if self.class.composite_primary_key? raise TypeError, "Expected value matching #{self.class.primary_key.inspect}, got #{value.inspect}." unless value.is_a?(Enumerable) @primary_key.zip(value) { |attr, value| _write_attribute(attr, value) } else _write_attribute(@primary_key, value) end end |
#id? ⇒ Boolean
Queries the primary key column’s value. If the primary key is composite, all primary key column values must be queryable.
45 46 47 48 49 50 51 |
# File 'lib/active_record/attribute_methods/primary_key.rb', line 45 def id? if self.class.composite_primary_key? @primary_key.all? { |col| _query_attribute(col) } else _query_attribute(@primary_key) end end |
#id_before_type_cast ⇒ Object
Returns the primary key column’s value before type cast. If the primary key is composite, returns an array of primary key column values before type cast.
55 56 57 58 59 60 61 |
# File 'lib/active_record/attribute_methods/primary_key.rb', line 55 def id_before_type_cast if self.class.composite_primary_key? @primary_key.map { |col| attribute_before_type_cast(col) } else attribute_before_type_cast(@primary_key) end end |
#id_for_database ⇒ Object
:nodoc:
83 84 85 86 87 88 89 |
# File 'lib/active_record/attribute_methods/primary_key.rb', line 83 def id_for_database # :nodoc: if self.class.composite_primary_key? @primary_key.map { |col| @attributes[col].value_for_database } else @attributes[@primary_key].value_for_database end end |
#id_in_database ⇒ Object
Returns the primary key column’s value from the database. If the primary key is composite, returns an array of primary key column values from database.
75 76 77 78 79 80 81 |
# File 'lib/active_record/attribute_methods/primary_key.rb', line 75 def id_in_database if self.class.composite_primary_key? @primary_key.map { |col| attribute_in_database(col) } else attribute_in_database(@primary_key) end end |
#id_was ⇒ Object
Returns the primary key column’s previous value. If the primary key is composite, returns an array of primary key column previous values.
65 66 67 68 69 70 71 |
# File 'lib/active_record/attribute_methods/primary_key.rb', line 65 def id_was if self.class.composite_primary_key? @primary_key.map { |col| attribute_was(col) } else attribute_was(@primary_key) end end |
#primary_key_values_present? ⇒ Boolean
:nodoc:
26 27 28 29 30 |
# File 'lib/active_record/attribute_methods/primary_key.rb', line 26 def primary_key_values_present? # :nodoc: return id.all? if self.class.composite_primary_key? !!id end |
#to_key ⇒ Object
Returns this record’s primary key value wrapped in an array if one is available.
13 14 15 16 |
# File 'lib/active_record/attribute_methods/primary_key.rb', line 13 def to_key key = id Array(key) if key end |