Module: TbCore::Mysql2Extensions
- Extended by:
- ActiveSupport::Concern
- Defined in:
- lib/tb_core/mysql2_extensions.rb
Instance Method Summary collapse
-
#add_index(table_name, column_name, options = {}) ⇒ Object
Adds an index to the table.
-
#length_options_for_utf8mb4_string_index(table_name, column_names) ⇒ Object
Build a hash of length options for a given table and column name.
Instance Method Details
#add_index(table_name, column_name, options = {}) ⇒ Object
Adds an index to the table
See parent method implementation here: api.rubyonrails.org/classes/ActiveRecord/ConnectionAdapters/SchemaStatements.html#method-i-add_index
29 30 31 32 33 34 |
# File 'lib/tb_core/mysql2_extensions.rb', line 29 def add_index(table_name, column_name, = {}) if [:length].nil? && @connection.[:encoding] == 'utf8mb4' [:length] = (table_name, column_name) end super(table_name, column_name, ) end |
#length_options_for_utf8mb4_string_index(table_name, column_names) ⇒ Object
Build a hash of length options for a given table and column name
column_name can be either a symbol or an array of symbols
8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
# File 'lib/tb_core/mysql2_extensions.rb', line 8 def (table_name, column_names) = {} column_names = [column_names] unless column_names.is_a?(Array) column_names.each do |column_name| begin column = column_for(table_name, column_name) if column && column.type == :string [column_name] = ActiveRecord::ConnectionAdapters::Mysql2Adapter::MAX_INDEX_LENGTH_FOR_UTF8MB4 end rescue ActiveRecord::ActiveRecordError => e logger.info e. end end return end |