aboutsummaryrefslogtreecommitdiffstats
path: root/activerecord/lib/active_record/dynamic_finder_match.rb
diff options
context:
space:
mode:
authorJosh Susser <josh@hasmanythrough.com>2008-08-25 21:28:53 -0700
committerJeremy Kemper <jeremy@bitsweat.net>2008-08-25 23:33:16 -0700
commit1092c181b5568d06e84f6a3253aaca81c02a2b2c (patch)
tree3fb246c856bbefddf8fc1e635eb765c540619c41 /activerecord/lib/active_record/dynamic_finder_match.rb
parent143f5fbb21b6dfcaab63d67b44afd922dab9dcf5 (diff)
downloadrails-1092c181b5568d06e84f6a3253aaca81c02a2b2c.tar.gz
rails-1092c181b5568d06e84f6a3253aaca81c02a2b2c.tar.bz2
rails-1092c181b5568d06e84f6a3253aaca81c02a2b2c.zip
add dynamic finder bang version to raise RecordNotFound
[#905 state:resolved] Signed-off-by: Jeremy Kemper <jeremy@bitsweat.net>
Diffstat (limited to 'activerecord/lib/active_record/dynamic_finder_match.rb')
-rw-r--r--activerecord/lib/active_record/dynamic_finder_match.rb7
1 files changed, 7 insertions, 0 deletions
diff --git a/activerecord/lib/active_record/dynamic_finder_match.rb b/activerecord/lib/active_record/dynamic_finder_match.rb
index 4618e777a4..b105b919f5 100644
--- a/activerecord/lib/active_record/dynamic_finder_match.rb
+++ b/activerecord/lib/active_record/dynamic_finder_match.rb
@@ -11,6 +11,9 @@ module ActiveRecord
when /^find_(all_by|by)_([_a-zA-Z]\w*)$/
@finder = :find_every if $1 == 'all_by'
names = $2
+ when /^find_by_([_a-zA-Z]\w*)\!$/
+ @bang = true
+ names = $1
when /^find_or_(initialize|create)_by_([_a-zA-Z]\w*)$/
@instantiator = $1 == 'initialize' ? :new : :create
names = $2
@@ -29,5 +32,9 @@ module ActiveRecord
def instantiator?
@finder == :find_initial && !@instantiator.nil?
end
+
+ def bang?
+ @bang
+ end
end
end