diff --git a/lib/global_id/global_id.rb b/lib/global_id/global_id.rb index 71bd802..270a85a 100644 --- a/lib/global_id/global_id.rb +++ b/lib/global_id/global_id.rb @@ -51,7 +51,13 @@ def find(options = {}) end def model_class - model_name.constantize + model = model_name.constantize + + unless model <= GlobalID + model + else + raise ArgumentError, "GlobalID and SignedGlobalID cannot be used as model_class." + end end def ==(other) diff --git a/test/cases/global_id_test.rb b/test/cases/global_id_test.rb index 7f77304..22e55ce 100644 --- a/test/cases/global_id_test.rb +++ b/test/cases/global_id_test.rb @@ -177,6 +177,9 @@ class GlobalIDCreationTest < ActiveSupport::TestCase assert_equal Person, @person_uuid_gid.model_class assert_equal Person::Child, @person_namespaced_gid.model_class assert_equal PersonModel, @person_model_gid.model_class + assert_raise ArgumentError do + person_gid = GlobalID.find 'gid://bcx/SignedGlobalID/5' + end end test ':app option' do