mirror of
https://github.com/rails/rails.git
synced 2022-11-09 12:12:34 -05:00
Make VALID_DIRECTIONS
to Set
```ruby require "benchmark/ips" require "set" array = [:asc, :desc, :ASC, :DESC, "asc", "desc", "ASC", "DESC"] set = array.to_set item = "DESC" Benchmark.ips do |x| x.report "array" do array.include?(item) end x.report "set" do set.include?(item) end end ``` ``` % ruby array_vs_set.rb Warming up -------------------------------------- array 188.441k i/100ms set 229.531k i/100ms Calculating ------------------------------------- array 3.508M (± 9.0%) i/s - 17.525M in 5.043058s set 5.134M (± 7.6%) i/s - 25.707M in 5.038921s ```
This commit is contained in:
parent
c01ea3e549
commit
0d874b4a5a
1 changed files with 5 additions and 3 deletions
|
@ -1100,14 +1100,16 @@ module ActiveRecord
|
|||
end
|
||||
|
||||
VALID_DIRECTIONS = [:asc, :desc, :ASC, :DESC,
|
||||
"asc", "desc", "ASC", "DESC"] # :nodoc:
|
||||
"asc", "desc", "ASC", "DESC"].to_set # :nodoc:
|
||||
|
||||
def validate_order_args(args)
|
||||
args.each do |arg|
|
||||
next unless arg.is_a?(Hash)
|
||||
arg.each do |_key, value|
|
||||
raise ArgumentError, "Direction \"#{value}\" is invalid. Valid " \
|
||||
"directions are: #{VALID_DIRECTIONS.inspect}" unless VALID_DIRECTIONS.include?(value)
|
||||
unless VALID_DIRECTIONS.include?(value)
|
||||
raise ArgumentError,
|
||||
"Direction \"#{value}\" is invalid. Valid directions are: #{VALID_DIRECTIONS.to_a.inspect}"
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
Loading…
Reference in a new issue