Module: TbCore::Mysql2Extensions
- 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.
-
#create_table(table_name, options = {}) ⇒ Object
Create a new 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
38 39 40 41 42 43 |
# File 'lib/tb_core/mysql2_extensions.rb', line 38 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 |
#create_table(table_name, options = {}) ⇒ Object
Create a new table
5 6 7 8 9 10 11 |
# File 'lib/tb_core/mysql2_extensions.rb', line 5 def create_table(table_name, = {}) if @connection.[:encoding] == 'utf8mb4' super(table_name, .reverse_merge(:options => 'ROW_FORMAT=DYNAMIC ENGINE=InnoDB')) else super end 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
17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 |
# File 'lib/tb_core/mysql2_extensions.rb', line 17 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 |