Plugin para validar o valor de um campo personalizado do tipo texto

Tenho um campo personalizado para o usuário para armazenar o projectid do projeto do qual o usuário é membro.

Propósito: um usuário que insere um projectid válido (pago) tem acesso a categorias de conteúdo rico.

Verificar se o projectid inserido pelo usuário corresponde a um projectid existente é bastante fácil:

# Define o método para verificar o campo personalizado
def validate_projectid_customfield
  # Chave do campo personalizado e lista predefinida
  custom_field_key = 'projectid'
  predefined_list = ["558", "963", "819"]

  # Obtém o valor do campo personalizado do usuário
  user_field_value = self.custom_fields[custom_field_key]

  # Se o valor não estiver na lista predefinida, gere um erro
  if !user_field_value.nil? && !user_field_value.empty?
    unless predefined_list.include?(user_field_value)
      # Gere um erro de validação que o Discourse entenderá
      O QUE FAZER AQUI?
    end
  end
end

No momento, tenho o seguinte código no lugar de ‘O QUE FAZER AQUI?’:

self.errors.add(:base, I18n.t("user.project.invalid_value"))
raise ActiveRecord::RecordInvalid.new(self)

Mas isso não parece funcionar.

Se eu pegar a página de perfil e preencher um valor (certo ou errado), o sistema primeiro reage com “Salvo!” imediatamente seguido por “500 Internal Server Error”.

Talvez tudo se deva ao código errado no início?

after_initialize do
  add_model_callback(User, :before_save) do
    validate_projectid_customfield
  end
end

Alguém pode me ajudar ou me direcionar para a documentação correta?

Obrigado!

Tenho certeza de que este trecho de código é o que causa o Erro Interno do Servidor 500:

Alguém pode me dizer como acessar o valor do campo do usuário de um campo personalizado?

Outros trechos de código que também não estão funcionando:

custom_field_value = self.user.reload.custom_fields[custom_field_key]
custom_field_value = UserCustomField.where(user_id: self.user.id, name: custom_field_key).pluck(:value).first

Alguma ideia / indicação de documentação ou código?