aboutsummaryrefslogtreecommitdiffstats
path: root/actionpack/lib/action_dispatch/journey/route.rb
diff options
context:
space:
mode:
authorRafael França <rafaelmfranca@gmail.com>2016-12-28 20:49:08 -0500
committerGitHub <noreply@github.com>2016-12-28 20:49:08 -0500
commit09cdf425d70cfec541e0008c28055155d70c6f37 (patch)
tree3e2fb4694230c63bc5cbbbb9ead82c25e1466249 /actionpack/lib/action_dispatch/journey/route.rb
parent47cda2e1f655d38a204c4df88d780500c1e99316 (diff)
parentf1525dac115cea40ec41b4f9e267e011be8da22e (diff)
downloadrails-09cdf425d70cfec541e0008c28055155d70c6f37.tar.gz
rails-09cdf425d70cfec541e0008c28055155d70c6f37.tar.bz2
rails-09cdf425d70cfec541e0008c28055155d70c6f37.zip
Merge pull request #27486 from schleyfox/optimize-journey-route-score-url_for
Optimize Journey::Route#score for url_for
Diffstat (limited to 'actionpack/lib/action_dispatch/journey/route.rb')
-rw-r--r--actionpack/lib/action_dispatch/journey/route.rb13
1 files changed, 9 insertions, 4 deletions
diff --git a/actionpack/lib/action_dispatch/journey/route.rb b/actionpack/lib/action_dispatch/journey/route.rb
index 0cc8d83ac8..f2ac4818d8 100644
--- a/actionpack/lib/action_dispatch/journey/route.rb
+++ b/actionpack/lib/action_dispatch/journey/route.rb
@@ -96,13 +96,18 @@ module ActionDispatch
required_parts + required_defaults.keys
end
- def score(constraints)
+ def score(supplied_keys)
required_keys = path.required_names
- supplied_keys = constraints.map { |k, v| v && k.to_s }.compact
- return -1 unless (required_keys - supplied_keys).empty?
+ required_keys.each do |k|
+ return -1 unless supplied_keys.include?(k)
+ end
+
+ score = 0
+ path.names.each do |k|
+ score += 1 if supplied_keys.include?(k)
+ end
- score = (supplied_keys & path.names).length
score + (required_defaults.length * 2)
end