module Enumerize::ActiveRecordSupport
def enumerize(name, options={})
def enumerize(name, options={}) super _enumerize_module.dependent_eval do if self < ::ActiveRecord::Base include InstanceMethods const_get(:ActiveRecord_Relation).include(RelationMethods) const_get(:ActiveRecord_AssociationRelation).include(RelationMethods) const_get(:ActiveRecord_Associations_CollectionProxy).include(RelationMethods) # Since Rails use `allocate` method on models and initializes them with `init_with` method. # This way `initialize` method is not being called, but `after_initialize` callback always gets triggered. after_initialize :_set_default_value_for_enumerized_attributes # https://github.com/brainspec/enumerize/issues/111 require 'enumerize/hooks/uniqueness' unless options[:multiple] if ::ActiveRecord.version >= ::Gem::Version.new("7.2.0.alpha") attribute(name) decorate_attributes([name]) do |_, subtype| Type.new(enumerized_attributes[name], subtype) end elsif ::ActiveRecord.version >= ::Gem::Version.new("7.0.0.alpha") attribute(name) do |subtype| Type.new(enumerized_attributes[name], subtype) end elsif ::ActiveRecord.version >= ::Gem::Version.new("6.1.0.alpha") decorate_attribute_type(name.to_s) do |subtype| Type.new(enumerized_attributes[name], subtype) end else decorate_attribute_type(name, :enumerize) do |subtype| Type.new(enumerized_attributes[name], subtype) end end end end end end