diff --git a/lib/enumerize/activerecord.rb b/lib/enumerize/activerecord.rb index ff6226f..f6dec5f 100644 --- a/lib/enumerize/activerecord.rb +++ b/lib/enumerize/activerecord.rb @@ -124,6 +124,8 @@ def serialize(value) end def cast(value) + return value if @subtype.is_a?(Type) + if value.is_a?(::Enumerize::Value) value else diff --git a/test/activerecord_test.rb b/test/activerecord_test.rb index 1bccb65..aa51e13 100644 --- a/test/activerecord_test.rb +++ b/test/activerecord_test.rb @@ -693,6 +693,15 @@ def self.name expect(user2.skill).must_equal 'casual' end + it 'works when child class calls enumerize second time' do + class AdminUser < User + enumerize :account_type, in: [:basic, :premium, :pro] + end + + admin = AdminUser.create(account_type: 'pro') + expect(admin.account_type).must_equal 'pro' + end + if Rails::VERSION::MAJOR >= 6 it 'supports AR#insert_all' do User.delete_all