Correções para funcionamento da criação do login motorista no qual não permitia email nulo

This commit is contained in:
2026-06-16 16:00:36 -03:00
parent 6efbb45b70
commit ae6f0122d4
6 changed files with 321 additions and 3 deletions

View File

@@ -0,0 +1,20 @@
# Motoristas fazem login por PIN/QR e podem não ter e-mail. A coluna email era
# NOT NULL com default "" e índice único — então criar o 2º motorista sem e-mail
# colidia em "" (RecordNotUnique → 500 ao salvar pela tela de usuários).
#
# Solução: permitir NULL e converter os "" existentes em NULL. No Postgres o
# índice único trata múltiplos NULL como distintos, então vários motoristas sem
# e-mail convivem sem conflito.
class AllowNullEmailForMotoristas < ActiveRecord::Migration[7.1]
def up
change_column_null :users, :email, true
change_column_default :users, :email, from: '', to: nil
execute "UPDATE users SET email = NULL WHERE email = ''"
end
def down
execute "UPDATE users SET email = '' WHERE email IS NULL"
change_column_default :users, :email, from: nil, to: ''
change_column_null :users, :email, false
end
end