Method: ActiveRecord::ConnectionAdapters::SchemaStatements#add_index_options
- Defined in:
- activerecord/lib/active_record/connection_adapters/abstract/schema_statements.rb
#add_index_options(table_name, column_name, comment: nil, **options) ⇒ Object
:nodoc:
1183 1184 1185 1186 1187 1188 1189 1190 1191 1192 1193 1194 1195 1196 1197 1198 1199 1200 1201 1202 1203 1204 1205 1206 1207 1208 1209 1210 |
# File 'activerecord/lib/active_record/connection_adapters/abstract/schema_statements.rb', line 1183 def (table_name, column_name, comment: nil, **) # :nodoc: column_names = index_column_names(column_name) .assert_valid_keys(:unique, :order, :name, :where, :length, :internal, :using, :algorithm, :type, :opclass) index_type = [:type].to_s if .key?(:type) index_type ||= [:unique] ? "UNIQUE" : "" index_name = [:name].to_s if .key?(:name) index_name ||= index_name(table_name, column_names) if .key?(:algorithm) algorithm = index_algorithms.fetch([:algorithm]) { raise ArgumentError.new("Algorithm must be one of the following: #{index_algorithms.keys.map(&:inspect).join(', ')}") } end using = "USING #{[:using]}" if [:using].present? if supports_partial_index? = [:where] ? " WHERE #{[:where]}" : "" end validate_index_length!(table_name, index_name, .fetch(:internal, false)) index_columns = quoted_columns_for_index(column_names, **).join(", ") [index_name, index_type, index_columns, , algorithm, using, comment] end |