Sha256: 38174c7b4f434b79028ea55f34465ebcdfc0ebafd709e750db287d9f07d30a8f
Contents?: true
Size: 1.53 KB
Versions: 1
Compression:
Stored size: 1.53 KB
Contents
module ActiveRecord module ConnectionAdapters class AbstractMysqlAdapter class << self def register_enum_type(mapping) mapping.register_type(%r(enum)i) do |sql_type| Type::Enum.new(limit: sql_type.to_s.scan(/'(.*?)'/).flatten) end end end # In Rails 6.1, registering the enum type is an instance method and is # done on initialization, In Rails 7.0 it is a class method and # the registration happens when the class is loaded. So, in Rails 6.1, # we can override the `initialize_type_map` method to register the enum # but in Rails 7.1, we need to call register_enum_type explicitly. if SqlEnum.rails_version_match?("6.1") module SqlEnumMapper def initialize_type_map(m = type_map) super(m) AbstractMysqlAdapter.register_enum_type(m) end end ActiveRecord::ConnectionAdapters::Mysql2Adapter.prepend(SqlEnumMapper) end if SqlEnum.rails_version_match?("7.0") [ ActiveRecord::ConnectionAdapters::Mysql2Adapter::TYPE_MAP, ActiveRecord::ConnectionAdapters::Mysql2Adapter::TYPE_MAP_WITH_BOOLEAN ].each do |m| AbstractMysqlAdapter.register_enum_type(m) end end # Rails 7.1 drops the TYPE_MAP_WITH_BOOLEAN constant if SqlEnum.rails_version_match?("7.1") AbstractMysqlAdapter.register_enum_type( ActiveRecord::ConnectionAdapters::Mysql2Adapter::TYPE_MAP ) end end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
sql_enum-1.0.0 | lib/active_record/connection_adapters/abstract_mysql.rb |