Correções para funcionamento da criação do login motorista no qual não permitia email nulo
This commit is contained in:
@@ -40,15 +40,19 @@ class Entrega < ApplicationRecord
|
||||
}
|
||||
|
||||
# Filtra pela(s) conta(s) configurada(s) em DB_EXISTING_ACCOUNT_ID.
|
||||
# A coluna account_id é TEXTO e pode vir vazia, então comparamos como string.
|
||||
# A coluna account_id é TEXTO e pode vir vazia/NULL, então comparamos como string.
|
||||
# IMPORTANTE: o valor é uma LISTA separada por vírgula — NÃO um trecho de SQL.
|
||||
# Aceita: "95907" (uma) | "95907,12345" (várias) | "all" ou vazio (sem filtro).
|
||||
# Use "95907," (com vírgula) para incluir também os registros de conta vazia.
|
||||
# Use "95907," (vírgula no fim) para incluir também registros de conta vazia/NULL.
|
||||
scope :da_conta_gade, -> {
|
||||
contas = ENV.fetch('DB_EXISTING_ACCOUNT_ID', '95907').to_s.strip
|
||||
if contas.empty? || contas.casecmp?('all')
|
||||
all
|
||||
else
|
||||
where(account_id: contas.split(',', -1).map(&:strip))
|
||||
valores = contas.split(',', -1).map(&:strip)
|
||||
# Token vazio (ex.: "95907,") → inclui também as linhas sem conta (NULL).
|
||||
valores << nil if valores.any?(&:empty?)
|
||||
where(account_id: valores)
|
||||
end
|
||||
}
|
||||
|
||||
|
||||
@@ -27,6 +27,10 @@ class User < ApplicationRecord
|
||||
|
||||
validate :pin_unico_para_motoristas, if: :motorista?
|
||||
|
||||
# E-mail em branco vira NULL: evita colisão no índice único quando vários
|
||||
# motoristas são criados sem e-mail (no Postgres NULLs são distintos entre si).
|
||||
before_validation :normalizar_email_em_branco
|
||||
|
||||
# Motoristas podem não ter e-mail (login via PIN)
|
||||
def email_required?
|
||||
!motorista?
|
||||
@@ -65,6 +69,10 @@ class User < ApplicationRecord
|
||||
|
||||
private
|
||||
|
||||
def normalizar_email_em_branco
|
||||
self.email = nil if email.blank?
|
||||
end
|
||||
|
||||
def pin_unico_para_motoristas
|
||||
return if pin_code.blank?
|
||||
|
||||
|
||||
Reference in New Issue
Block a user