Sha256: 8c8f69fda2acbdd958675928d29030710ecad7728d021cacddbe291fe5e15a3e
Contents?: true
Size: 877 Bytes
Versions: 3
Compression:
Stored size: 877 Bytes
Contents
# frozen_string_literal: true module SqlEnum EnumColumn = Struct.new(:table_name, :column_name) do def values schema_values.to_s.scan(/\w+/).reject { |v| v == 'enum' } end private def schema_values ActiveRecord::Base.connection.exec_query(schema_values_query).rows.dig(0, 0) end def database_name if ActiveRecord::Base.respond_to?(:connection_db_config) ActiveRecord::Base.connection_db_config.configuration_hash[:database] else ActiveRecord::Base.connection_config.values_at(:database, :database_name).find(&:present?) end end def schema_values_query <<~SQL SELECT column_type FROM information_schema.COLUMNS WHERE TABLE_SCHEMA = '#{database_name}' AND TABLE_NAME = '#{table_name}' AND COLUMN_NAME = '#{column_name}' SQL end end end
Version data entries
3 entries across 3 versions & 1 rubygems
Version | Path |
---|---|
sql_enum-1.0.0 | lib/sql_enum/enum_column.rb |
sql_enum-0.4.0 | lib/sql_enum/enum_column.rb |
sql_enum-0.3.1 | lib/sql_enum/enum_column.rb |