Methods
D
P
Q
Instance Public methods
dangerous_attribute_method?(method_name)
    # File activerecord/lib/active_record/attribute_methods/primary_key.rb, line 43
43:         def dangerous_attribute_method?(method_name)
44:           super && !['id', 'id=', 'id?'].include?(method_name)
45:         end
define_method_attribute(attr_name)
    # File activerecord/lib/active_record/attribute_methods/primary_key.rb, line 28
28:         def define_method_attribute(attr_name)
29:           super
30: 
31:           if attr_name == primary_key && attr_name != 'id'
32:             generated_attribute_methods.send(:alias_method, :id, primary_key)
33:             generated_external_attribute_methods.module_eval "def id(v, attributes, attributes_cache, attr_name)\nattr_name = '\#{primary_key}'\nsend(attr_name, attributes[attr_name], attributes, attributes_cache, attr_name)\nend\n", __FILE__, __LINE__
34:           end
35:         end
primary_key()

Defines the primary key field — can be overridden in subclasses. Overwriting will negate any effect of the primary_key_prefix_type setting, though.

    # File activerecord/lib/active_record/attribute_methods/primary_key.rb, line 49
49:         def primary_key
50:           @primary_key = reset_primary_key unless defined? @primary_key
51:           @primary_key
52:         end
primary_key=(value)

Sets the name of the primary key column.

  class Project < ActiveRecord::Base
    self.primary_key = "sysid"
  end

You can also define the primary_key method yourself:

  class Project < ActiveRecord::Base
    def self.primary_key
      "foo_" + super
    end
  end
  Project.primary_key # => "foo_id"
     # File activerecord/lib/active_record/attribute_methods/primary_key.rb, line 102
102:         def primary_key=(value)
103:           @original_primary_key = @primary_key if defined?(@primary_key)
104:           @primary_key          = value && value.to_s
105:           @quoted_primary_key   = nil
106:         end
quoted_primary_key()

Returns a quoted version of the primary key name, used to construct SQL statements.

    # File activerecord/lib/active_record/attribute_methods/primary_key.rb, line 55
55:         def quoted_primary_key
56:           @quoted_primary_key ||= connection.quote_column_name(primary_key)
57:         end