aboutsummaryrefslogtreecommitdiffstats
path: root/activerecord/lib/active_record/relation
diff options
context:
space:
mode:
authorSameer Rahmani <lxsameer@gnu.org>2015-07-21 18:49:09 +0430
committerSameer Rahmani <lxsameer@gnu.org>2015-07-21 19:19:14 +0430
commitd763956ed95bce581f12151a5ed4df12bcefdeee (patch)
treed79749c8598debbba48a6f6d81442f60157c7361 /activerecord/lib/active_record/relation
parent36ea89a80c502067bf513b6d16a547411511fae8 (diff)
downloadrails-d763956ed95bce581f12151a5ed4df12bcefdeee.tar.gz
rails-d763956ed95bce581f12151a5ed4df12bcefdeee.tar.bz2
rails-d763956ed95bce581f12151a5ed4df12bcefdeee.zip
Extra caller details added to ActiveRecord::RecordNotFound
ActiveRecord::RecordNotFound modified to store model name, primary_key and id of the caller model. It allows the catcher of this exception to make a better decision to what to do with it. For example consider this simple example: class SomeAbstractController < ActionController::Base rescue_from ActiveRecord::RecordNotFound, with: :redirect_to_404 private def redirect_to_404(e) return redirect_to(posts_url) if e.model == 'Post' raise end end
Diffstat (limited to 'activerecord/lib/active_record/relation')
-rw-r--r--activerecord/lib/active_record/relation/finder_methods.rb3
1 files changed, 2 insertions, 1 deletions
diff --git a/activerecord/lib/active_record/relation/finder_methods.rb b/activerecord/lib/active_record/relation/finder_methods.rb
index 9fef55adea..009b2bad57 100644
--- a/activerecord/lib/active_record/relation/finder_methods.rb
+++ b/activerecord/lib/active_record/relation/finder_methods.rb
@@ -85,7 +85,8 @@ module ActiveRecord
def find_by!(arg, *args)
where(arg, *args).take!
rescue RangeError
- raise RecordNotFound, "Couldn't find #{@klass.name} with an out of range value"
+ raise RecordNotFound.new("Couldn't find #{@klass.name} with an out of range value",
+ @klass.name)
end
# Gives a record (or N records if a parameter is supplied) without any implied