diff options
author | Josh Susser <josh@hasmanythrough.com> | 2008-08-25 21:28:53 -0700 |
---|---|---|
committer | Jeremy Kemper <jeremy@bitsweat.net> | 2008-08-25 23:33:16 -0700 |
commit | 1092c181b5568d06e84f6a3253aaca81c02a2b2c (patch) | |
tree | 3fb246c856bbefddf8fc1e635eb765c540619c41 /activerecord/lib/active_record/dynamic_finder_match.rb | |
parent | 143f5fbb21b6dfcaab63d67b44afd922dab9dcf5 (diff) | |
download | rails-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.rb | 7 |
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 |