aboutsummaryrefslogtreecommitdiffstats
path: root/actionpack/lib/action_controller/metal
diff options
context:
space:
mode:
authorJosé Valim <jose.valim@gmail.com>2011-09-23 16:46:33 +0200
committerJosé Valim <jose.valim@gmail.com>2011-09-23 16:46:33 +0200
commite8987c30d0dc3ae5903a6d3a6e293641759b6fc4 (patch)
tree5830b6162bdd90980ce6f2ddf9170aec01960eb2 /actionpack/lib/action_controller/metal
parentb2f34d1e3591df0f19f01ba30160661175c9a6b6 (diff)
downloadrails-e8987c30d0dc3ae5903a6d3a6e293641759b6fc4.tar.gz
rails-e8987c30d0dc3ae5903a6d3a6e293641759b6fc4.tar.bz2
rails-e8987c30d0dc3ae5903a6d3a6e293641759b6fc4.zip
Use safe_constantize where possible.
Diffstat (limited to 'actionpack/lib/action_controller/metal')
-rw-r--r--actionpack/lib/action_controller/metal/params_wrapper.rb9
1 files changed, 3 insertions, 6 deletions
diff --git a/actionpack/lib/action_controller/metal/params_wrapper.rb b/actionpack/lib/action_controller/metal/params_wrapper.rb
index 6acbb23907..e0d8e1c992 100644
--- a/actionpack/lib/action_controller/metal/params_wrapper.rb
+++ b/actionpack/lib/action_controller/metal/params_wrapper.rb
@@ -141,19 +141,16 @@ module ActionController
# try to find Foo::Bar::User, Foo::User and finally User.
def _default_wrap_model #:nodoc:
return nil if self.anonymous?
-
model_name = self.name.sub(/Controller$/, '').singularize
begin
- model_klass = model_name.constantize
- rescue NameError, ArgumentError => e
- if e.message =~ /is not missing constant|uninitialized constant #{model_name}/
+ if model_klass = model_name.safe_constantize
+ model_klass
+ else
namespaces = model_name.split("::")
namespaces.delete_at(-2)
break if namespaces.last == model_name
model_name = namespaces.join("::")
- else
- raise
end
end until model_klass