Module: ActiveRecord::AttributeMethods::CompositePrimaryKey
Do not use. This module is for internal use only.
Instance Attribute Summary
Instance Method Summary
Instance Attribute Details
#id
Returns the primary key column’s value. If the primary key is composite, returns an array of the primary key column values.
[ GitHub ]
# File 'activerecord/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)
Sets the primary key column’s value. If the primary key is composite, raises TypeError when the set value not enumerable.
[ GitHub ]
# File 'activerecord/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.
[ GitHub ]
# File 'activerecord/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
#primary_key_values_present? ⇒ Boolean
[ GitHub ]
# File 'activerecord/lib/active_record/attribute_methods/composite_primary_key.rb', line 16
def primary_key_values_present? if self.class.composite_primary_key?
id.all?
else
super
end
end
Instance Method Details
#id_before_type_cast
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.
[ GitHub ]
# File 'activerecord/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
[ GitHub ]
# File 'activerecord/lib/active_record/attribute_methods/composite_primary_key.rb', line 75
def id_for_database if self.class.composite_primary_key?
@primary_key.map { |col| @attributes[col].value_for_database }
else
super
end
end
#id_in_database
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.
[ GitHub ]
# File 'activerecord/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
Returns the primary key column’s previous value. If the primary key is composite, returns an array of primary key column previous values.
[ GitHub ]
# File 'activerecord/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