提交 3e22e0b0 编写于 作者: Y yury 提交者: José Valim

Micro optimization for build_named_route_call in PolymorphicRoutes:

1. use map instead of inject
2. use [].join("_") instead of '<<'. It is a little bit faster for ruby 1.9.2 and x2 faster for ruby 1.8.7. http://gist.github.com/548143

[#5450 state:resolved]
Signed-off-by: NJosé Valim <jose.valim@gmail.com>
上级 ececa75c
......@@ -148,29 +148,29 @@ def routing_type(options)
def build_named_route_call(records, inflection, options = {})
unless records.is_a?(Array)
record = extract_record(records)
route = ''
route = []
else
record = records.pop
route = records.inject("") do |string, parent|
route = records.map do |parent|
if parent.is_a?(Symbol) || parent.is_a?(String)
string << "#{parent}_"
parent
else
string << ActiveModel::Naming.plural(parent).singularize
string << "_"
ActiveModel::Naming.plural(parent).singularize
end
end
end
if record.is_a?(Symbol) || record.is_a?(String)
route << "#{record}_"
route << record
else
route << ActiveModel::Naming.plural(record)
route = route.singularize if inflection == :singular
route << "_"
route << "index_" if ActiveModel::Naming.uncountable?(record) && inflection == :plural
route = [route.join("_").singularize] if inflection == :singular
route << "index" if ActiveModel::Naming.uncountable?(record) && inflection == :plural
end
action_prefix(options) + route + routing_type(options).to_s
route << routing_type(options)
action_prefix(options) + route.join("_")
end
def extract_record(record_or_hash_or_array)
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册