O inflector pt-BR (inflections.rb) resolvia o composto ConsolidacaoMotorista para o singular "consolidacao_motorista", tabela que não existe (migration cria "consolidacao_motoristas"). Login do motorista por PIN derrubava /motorista com PG::UndefinedTable. Fixa self.table_name explicitamente nos models pt-BR (Consolidacao, ConsolidacaoMotorista, ConsolidacaoEntrega, Configuracao), eliminando a dependência do inflector. Spec trava os nomes de tabela. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
28 lines
1.1 KiB
Ruby
28 lines
1.1 KiB
Ruby
# app/models/consolidacao_motorista.rb
|
|
class ConsolidacaoMotorista < ApplicationRecord
|
|
# Nome da tabela fixado: o inflector pt-BR (config/initializers/inflections.rb)
|
|
# pode resolver o composto "consolidacao_motorista" no singular errado.
|
|
self.table_name = 'consolidacao_motoristas'
|
|
|
|
belongs_to :consolidacao
|
|
has_many :consolidacao_entregas,
|
|
->(cm) { where(motorista_nome: cm.motorista_nome) },
|
|
foreign_key: :consolidacao_id,
|
|
primary_key: :consolidacao_id
|
|
|
|
validates :motorista_nome, presence: true
|
|
validates :motorista_nome, uniqueness: { scope: :consolidacao_id }
|
|
|
|
before_save :recalcular_valor
|
|
|
|
def recalcular_valor
|
|
# Fonte única de verdade: o valor_aplicado capturado no momento da
|
|
# classificação (igual ao ConsolidacaoEntregasController#recalcular_motorista).
|
|
# Recalcular pelos preços atuais de Configuracao divergiria caso os preços
|
|
# mudassem depois das entregas já terem sido classificadas.
|
|
self.valor_total = consolidacao_entregas
|
|
.where(motorista_nome: motorista_nome)
|
|
.sum { |e| e.desconto? ? -e.valor_aplicado : e.valor_aplicado }
|
|
end
|
|
end
|