Module: ActiveRecord::AttributeMethods::CompositePrimaryKey
- Defined in:
- lib/active_record/attribute_methods/composite_primary_key.rb
Overview
:nodoc:
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:.
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.
8 9 10 11 12 13 14 |
# File 'lib/active_record/attribute_methods/composite_primary_key.rb', line 8 def id if self.class.composite_primary_key? @primary_key.map { |pk| _read_attribute(pk) } else super end 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.
26 27 28 29 30 31 32 33 |
# File 'lib/active_record/attribute_methods/composite_primary_key.rb', line 26 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 super 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.
37 38 39 40 41 42 43 |
# File 'lib/active_record/attribute_methods/composite_primary_key.rb', line 37 def id? if self.class.composite_primary_key? @primary_key.all? { |col| _query_attribute(col) } else super 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.
47 48 49 50 51 52 53 |
# File 'lib/active_record/attribute_methods/composite_primary_key.rb', line 47 def id_before_type_cast if self.class.composite_primary_key? @primary_key.map { |col| attribute_before_type_cast(col) } else super end end |
#id_for_database ⇒ Object
:nodoc:
75 76 77 78 79 80 81 |
# File 'lib/active_record/attribute_methods/composite_primary_key.rb', line 75 def id_for_database # :nodoc: if self.class.composite_primary_key? @primary_key.map { |col| @attributes[col].value_for_database } else super 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.
67 68 69 70 71 72 73 |
# File 'lib/active_record/attribute_methods/composite_primary_key.rb', line 67 def id_in_database if self.class.composite_primary_key? @primary_key.map { |col| attribute_in_database(col) } else super 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.
57 58 59 60 61 62 63 |
# File 'lib/active_record/attribute_methods/composite_primary_key.rb', line 57 def id_was if self.class.composite_primary_key? @primary_key.map { |col| attribute_was(col) } else super end end |
#primary_key_values_present? ⇒ Boolean
:nodoc:
16 17 18 19 20 21 22 |
# File 'lib/active_record/attribute_methods/composite_primary_key.rb', line 16 def primary_key_values_present? # :nodoc: if self.class.composite_primary_key? id.all? else super end end |