aboutsummaryrefslogtreecommitdiffstats
path: root/activerecord/lib/active_record/attribute_methods/primary_key.rb
diff options
context:
space:
mode:
authorJon Leighton <j@jonathanleighton.com>2011-10-05 01:09:43 +0100
committerJon Leighton <j@jonathanleighton.com>2011-10-05 01:11:40 +0100
commitee2be435b1e5c0e94a4ee93a1a310e0471a77d07 (patch)
treed30036d8c7f8520df4c6cd4c47e0f7733abe3525 /activerecord/lib/active_record/attribute_methods/primary_key.rb
parent5711a35ad8faa3fb6d138b234cbe9acfad27a9a8 (diff)
downloadrails-ee2be435b1e5c0e94a4ee93a1a310e0471a77d07.tar.gz
rails-ee2be435b1e5c0e94a4ee93a1a310e0471a77d07.tar.bz2
rails-ee2be435b1e5c0e94a4ee93a1a310e0471a77d07.zip
Raise error on unknown primary key.
If we don't have a primary key when we ask for it, it's better to fail fast. Fixes GH #2307.
Diffstat (limited to 'activerecord/lib/active_record/attribute_methods/primary_key.rb')
-rw-r--r--activerecord/lib/active_record/attribute_methods/primary_key.rb7
1 files changed, 7 insertions, 0 deletions
diff --git a/activerecord/lib/active_record/attribute_methods/primary_key.rb b/activerecord/lib/active_record/attribute_methods/primary_key.rb
index a404a5edd7..36d7f4ad11 100644
--- a/activerecord/lib/active_record/attribute_methods/primary_key.rb
+++ b/activerecord/lib/active_record/attribute_methods/primary_key.rb
@@ -14,6 +14,8 @@ module ActiveRecord
# primary_key_prefix_type setting, though.
def primary_key
@primary_key ||= reset_primary_key
+ raise ActiveRecord::UnknownPrimaryKey.new(self) unless @primary_key
+ @primary_key
end
# Returns a quoted version of the primary key name, used to construct SQL statements.
@@ -29,6 +31,11 @@ module ActiveRecord
key
end
+ def primary_key? #:nodoc:
+ @primary_key ||= reset_primary_key
+ !@primary_key.nil?
+ end
+
def get_primary_key(base_name) #:nodoc:
return 'id' unless base_name && !base_name.blank?