diff options
author | Seva Orlov <vseorlov@gmail.com> | 2016-04-11 20:57:19 +0300 |
---|---|---|
committer | Jeremy Daer <jeremydaer@gmail.com> | 2016-04-24 14:32:55 -0700 |
commit | c41ef01aec40bfaa9af707551d1e8a1f9f7380d1 (patch) | |
tree | 1bb0e0172a8da1110351499cbac01db4f8738973 /activerecord/lib/active_record | |
parent | 6c6eeda54d0f2c8e689772b50cc5c4419fa82749 (diff) | |
download | rails-c41ef01aec40bfaa9af707551d1e8a1f9f7380d1.tar.gz rails-c41ef01aec40bfaa9af707551d1e8a1f9f7380d1.tar.bz2 rails-c41ef01aec40bfaa9af707551d1e8a1f9f7380d1.zip |
remove_index do not fetch indexes if name is specified
There is no need to fetch all table indexes in remove_index if name is specified. If name is wrong, then StatementInvalid will be raised.
Signed-off-by: Jeremy Daer <jeremydaer@gmail.com>
Diffstat (limited to 'activerecord/lib/active_record')
-rw-r--r-- | activerecord/lib/active_record/connection_adapters/abstract/schema_statements.rb | 8 |
1 files changed, 7 insertions, 1 deletions
diff --git a/activerecord/lib/active_record/connection_adapters/abstract/schema_statements.rb b/activerecord/lib/active_record/connection_adapters/abstract/schema_statements.rb index d8cc60e924..f65dc4ed5a 100644 --- a/activerecord/lib/active_record/connection_adapters/abstract/schema_statements.rb +++ b/activerecord/lib/active_record/connection_adapters/abstract/schema_statements.rb @@ -1185,6 +1185,8 @@ module ActiveRecord end def index_name_for_remove(table_name, options = {}) + return options[:name] if can_remove_index_by_name?(options) + # if the adapter doesn't support the indexes call the best we can do # is return the default index name for the options provided return index_name(table_name, options) unless respond_to?(:indexes) @@ -1192,7 +1194,7 @@ module ActiveRecord checks = [] if options.is_a?(Hash) - checks << lambda { |i| i.name == options[:name].to_s } if options.has_key?(:name) + checks << lambda { |i| i.name == options[:name].to_s } if options.key?(:name) column_names = Array(options[:column]).map(&:to_s) else column_names = Array(options).map(&:to_s) @@ -1268,6 +1270,10 @@ module ActiveRecord default_or_changes end end + + def can_remove_index_by_name?(options) + options.is_a?(Hash) && options.key?(:name) && options.except(:name, :algorithm).empty? + end end end end |