diff options
author | Nathaniel Bibler <git@nathanielbibler.com> | 2012-06-01 10:11:01 -0400 |
---|---|---|
committer | Nathaniel Bibler <git@nathanielbibler.com> | 2012-06-01 10:38:30 -0400 |
commit | 537ede912895d421b24acfcbc86daf08f8f22157 (patch) | |
tree | f6584959a395e89be9aec64ba1dc8f4ac708bab1 /actionpack/lib/action_dispatch/routing | |
parent | b57fa0bf690b299ba4d8a0051bf06b9cecd3975a (diff) | |
download | rails-537ede912895d421b24acfcbc86daf08f8f22157.tar.gz rails-537ede912895d421b24acfcbc86daf08f8f22157.tar.bz2 rails-537ede912895d421b24acfcbc86daf08f8f22157.zip |
Use to_model delegates for polymorphic route generation
Diffstat (limited to 'actionpack/lib/action_dispatch/routing')
-rw-r--r-- | actionpack/lib/action_dispatch/routing/polymorphic_routes.rb | 8 |
1 files changed, 7 insertions, 1 deletions
diff --git a/actionpack/lib/action_dispatch/routing/polymorphic_routes.rb b/actionpack/lib/action_dispatch/routing/polymorphic_routes.rb index 013cf93dbc..055761fed5 100644 --- a/actionpack/lib/action_dispatch/routing/polymorphic_routes.rb +++ b/actionpack/lib/action_dispatch/routing/polymorphic_routes.rb @@ -97,7 +97,7 @@ module ActionDispatch end record = extract_record(record_or_hash_or_array) - record = record.to_model if record.respond_to?(:to_model) + record = convert_to_model(record) args = Array === record_or_hash_or_array ? record_or_hash_or_array.dup : @@ -124,6 +124,8 @@ module ActionDispatch args.last.kind_of?(Hash) ? args.last.merge!(url_options) : args << url_options end + args.collect! { |a| convert_to_model(a) } + (proxy || self).send(named_route, *args) end @@ -154,6 +156,10 @@ module ActionDispatch options[:action] ? "#{options[:action]}_" : '' end + def convert_to_model(object) + object.respond_to?(:to_model) ? object.to_model : object + end + def routing_type(options) options[:routing_type] || :url end |