aboutsummaryrefslogtreecommitdiffstats
path: root/activerecord
diff options
context:
space:
mode:
authorJosé Valim <jose.valim@gmail.com>2010-03-30 01:04:34 +0200
committerJosé Valim <jose.valim@gmail.com>2010-03-30 01:32:26 +0200
commit56bed512f92050f95701eca4f918086a8f1cda1e (patch)
tree70d36bf93772612bf7ddda398bf1af7a01944b5f /activerecord
parentb94c4080e5ba738b76b44d954bd8b13ff13e8688 (diff)
downloadrails-56bed512f92050f95701eca4f918086a8f1cda1e.tar.gz
rails-56bed512f92050f95701eca4f918086a8f1cda1e.tar.bz2
rails-56bed512f92050f95701eca4f918086a8f1cda1e.zip
Fix dom_id for ActiveRecord [#4296 state:resolved]
Diffstat (limited to 'activerecord')
-rw-r--r--activerecord/lib/active_record/attribute_methods/primary_key.rb22
-rwxr-xr-xactiverecord/lib/active_record/base.rb3
-rw-r--r--activerecord/test/cases/pk_test.rb6
3 files changed, 13 insertions, 18 deletions
diff --git a/activerecord/lib/active_record/attribute_methods/primary_key.rb b/activerecord/lib/active_record/attribute_methods/primary_key.rb
index 095814b635..411330dda2 100644
--- a/activerecord/lib/active_record/attribute_methods/primary_key.rb
+++ b/activerecord/lib/active_record/attribute_methods/primary_key.rb
@@ -3,6 +3,12 @@ module ActiveRecord
module PrimaryKey
extend ActiveSupport::Concern
+ # Returns this record's primary key value wrapped in an Array
+ # or nil if the record is a new_record?
+ def to_key
+ new_record? ? nil : [ send(self.class.primary_key) ]
+ end
+
module ClassMethods
# Defines the primary key field -- can be overridden in subclasses. Overwriting will negate any effect of the
# primary_key_prefix_type setting, though.
@@ -39,22 +45,6 @@ module ActiveRecord
end
alias :primary_key= :set_primary_key
end
-
- module InstanceMethods
-
- # Returns this record's primary key value wrapped in an Array
- # or nil if the record is a new_record?
- # This is done to comply with the AMo interface that expects
- # every AMo compliant object to respond_to?(:to_key) and return
- # an Enumerable object from that call, or nil if new_record?
- # This method also takes custom primary keys specified via
- # the +set_primary_key+ into account.
- def to_key
- new_record? ? nil : [ self.primary_key ]
- end
-
- end
-
end
end
end
diff --git a/activerecord/lib/active_record/base.rb b/activerecord/lib/active_record/base.rb
index 4d9493e82f..80f8569644 100755
--- a/activerecord/lib/active_record/base.rb
+++ b/activerecord/lib/active_record/base.rb
@@ -2223,6 +2223,7 @@ module ActiveRecord #:nodoc:
extend QueryCache::ClassMethods
extend ActiveSupport::Benchmarkable
+ include ActiveModel::Conversion
include Validations
include Locking::Optimistic, Locking::Pessimistic
include AttributeMethods
@@ -2232,12 +2233,10 @@ module ActiveRecord #:nodoc:
include AttributeMethods::Dirty
include Callbacks, ActiveModel::Observing, Timestamp
include Associations, AssociationPreload, NamedScope
- include ActiveModel::Conversion
# AutosaveAssociation needs to be included before Transactions, because we want
# #save_with_autosave_associations to be wrapped inside a transaction.
include AutosaveAssociation, NestedAttributes
-
include Aggregations, Transactions, Reflection, Serialization
NilClass.add_whiner(self) if NilClass.respond_to?(:add_whiner)
diff --git a/activerecord/test/cases/pk_test.rb b/activerecord/test/cases/pk_test.rb
index 5bba1d5625..33ad5992de 100644
--- a/activerecord/test/cases/pk_test.rb
+++ b/activerecord/test/cases/pk_test.rb
@@ -23,6 +23,12 @@ class PrimaryKeysTest < ActiveRecord::TestCase
assert_equal keyboard.to_key, [keyboard.id]
end
+ def test_to_key_with_primary_key_after_destroy
+ topic = Topic.find(1)
+ topic.destroy
+ assert_equal topic.to_key, [1]
+ end
+
def test_integer_key
topic = Topic.find(1)
assert_equal(topics(:first).author_name, topic.author_name)