Module: ActiveEntity::AttributeMethods::PrimaryKey::ClassMethods
- Defined in:
- lib/active_entity/attribute_methods/primary_key.rb
Constant Summary collapse
- ID_ATTRIBUTE_METHODS =
%w(id id= id? id_before_type_cast id_was).to_set
Instance Method Summary collapse
- #dangerous_attribute_method?(method_name) ⇒ Boolean
- #instance_method_already_implemented?(method_name) ⇒ Boolean
-
#primary_key ⇒ Object
Defines the primary key field – can be overridden in subclasses.
-
#primary_key=(value) ⇒ Object
Sets the name of the primary key column.
Instance Method Details
#dangerous_attribute_method?(method_name) ⇒ Boolean
55 56 57 |
# File 'lib/active_entity/attribute_methods/primary_key.rb', line 55 def dangerous_attribute_method?(method_name) super && !ID_ATTRIBUTE_METHODS.include?(method_name) end |
#instance_method_already_implemented?(method_name) ⇒ Boolean
51 52 53 |
# File 'lib/active_entity/attribute_methods/primary_key.rb', line 51 def instance_method_already_implemented?(method_name) super || primary_key && ID_ATTRIBUTE_METHODS.include?(method_name) end |
#primary_key ⇒ Object
Defines the primary key field – can be overridden in subclasses. Overwriting will negate any effect of the primary_key_prefix_type
setting, though.
62 63 64 65 66 67 68 69 70 71 72 73 |
# File 'lib/active_entity/attribute_methods/primary_key.rb', line 62 def primary_key unless defined? @primary_key @primary_key = if has_attribute?("id") "id" else nil end end @primary_key end |
#primary_key=(value) ⇒ Object
Sets the name of the primary key column.
class Project < ActiveEntity::Base
self.primary_key = 'sysid'
end
You can also define the #primary_key method yourself:
class Project < ActiveEntity::Base
def self.primary_key
'foo_' + super
end
end
Project.primary_key # => "foo_id"
90 91 92 |
# File 'lib/active_entity/attribute_methods/primary_key.rb', line 90 def primary_key=(value) @primary_key = value && -value.to_s end |