123456789_123456789_123456789_123456789_123456789_

Module: ActiveRecord::AttributeMethods::CompositePrimaryKey

Do not use. This module is for internal use only.

Instance Attribute Summary

Instance Method Summary

Instance Attribute Details

#id (rw)

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) (rw)

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 (rw)

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 (readonly)

[ GitHub ]

  
# File 'activerecord/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

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 # :nodoc:
  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