aboutsummaryrefslogtreecommitdiffstats
path: root/actionpack/lib/action_dispatch/routing/polymorphic_routes.rb
diff options
context:
space:
mode:
authorAndrew White <andrew.white@unboxed.co>2017-02-21 08:49:15 +0000
committerAndrew White <andrew.white@unboxed.co>2017-02-21 15:30:47 +0000
commit81a6761af2b20183c78853caa4daea4ccf6b4cb7 (patch)
tree1b0c39d13af6770e76df5207d625e77cc456f5f9 /actionpack/lib/action_dispatch/routing/polymorphic_routes.rb
parent80dcfd014b27e560f5c4b07ee5ffa98894d8ff63 (diff)
downloadrails-81a6761af2b20183c78853caa4daea4ccf6b4cb7.tar.gz
rails-81a6761af2b20183c78853caa4daea4ccf6b4cb7.tar.bz2
rails-81a6761af2b20183c78853caa4daea4ccf6b4cb7.zip
Support mapping of non-model classes
Diffstat (limited to 'actionpack/lib/action_dispatch/routing/polymorphic_routes.rb')
-rw-r--r--actionpack/lib/action_dispatch/routing/polymorphic_routes.rb13
1 files changed, 10 insertions, 3 deletions
diff --git a/actionpack/lib/action_dispatch/routing/polymorphic_routes.rb b/actionpack/lib/action_dispatch/routing/polymorphic_routes.rb
index 512e23c833..1c44d25ef6 100644
--- a/actionpack/lib/action_dispatch/routing/polymorphic_routes.rb
+++ b/actionpack/lib/action_dispatch/routing/polymorphic_routes.rb
@@ -165,8 +165,11 @@ module ActionDispatch
end
def polymorphic_mapping(record)
- return false unless record.respond_to?(:to_model)
- _routes.polymorphic_mappings[record.to_model.model_name.name]
+ if record.respond_to?(:to_model)
+ _routes.polymorphic_mappings[record.to_model.model_name.name]
+ else
+ _routes.polymorphic_mappings[record.class.name]
+ end
end
class HelperMethodBuilder # :nodoc:
@@ -321,7 +324,11 @@ module ActionDispatch
private
def polymorphic_mapping(target, record)
- target._routes.polymorphic_mappings[record.to_model.model_name.name]
+ if record.respond_to?(:to_model)
+ target._routes.polymorphic_mappings[record.to_model.model_name.name]
+ else
+ target._routes.polymorphic_mappings[record.class.name]
+ end
end
def get_method_for_class(klass)