From c7ed5f0ceb8342c2158c76bb5e2721e9fb5748fa60b6b05b723ae6120b4be376 Mon Sep 17 00:00:00 2001 From: victor Date: Tue, 16 Jun 2026 01:50:07 -0300 Subject: [PATCH] Corrige 500 no painel do motorista (tabela consolidacao_motorista inexistente) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 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 --- app/models/configuracao.rb | 2 ++ app/models/consolidacao.rb | 2 ++ app/models/consolidacao_entrega.rb | 3 +++ app/models/consolidacao_motorista.rb | 4 ++++ spec/models/table_names_spec.rb | 17 +++++++++++++++++ 5 files changed, 28 insertions(+) create mode 100644 spec/models/table_names_spec.rb diff --git a/app/models/configuracao.rb b/app/models/configuracao.rb index 4b61c20..fd84c68 100644 --- a/app/models/configuracao.rb +++ b/app/models/configuracao.rb @@ -1,5 +1,7 @@ # app/models/configuracao.rb class Configuracao < ApplicationRecord + self.table_name = 'configuracoes' + # Chaves válidas do sistema CHAVES = %w[ preco_entrega diff --git a/app/models/consolidacao.rb b/app/models/consolidacao.rb index 779c555..089fc35 100644 --- a/app/models/consolidacao.rb +++ b/app/models/consolidacao.rb @@ -1,5 +1,7 @@ # app/models/consolidacao.rb class Consolidacao < ApplicationRecord + self.table_name = 'consolidacoes' + belongs_to :criador, class_name: 'User', foreign_key: :created_by belongs_to :finalizador, class_name: 'User', foreign_key: :finalizado_por, optional: true belongs_to :arquivador, class_name: 'User', foreign_key: :arquivado_por, optional: true diff --git a/app/models/consolidacao_entrega.rb b/app/models/consolidacao_entrega.rb index 6ed511c..7c192df 100644 --- a/app/models/consolidacao_entrega.rb +++ b/app/models/consolidacao_entrega.rb @@ -1,5 +1,8 @@ # app/models/consolidacao_entrega.rb class ConsolidacaoEntrega < ApplicationRecord + # Nome da tabela fixado (mesmo motivo de ConsolidacaoMotorista — inflector pt-BR). + self.table_name = 'consolidacao_entregas' + belongs_to :consolidacao enum tipo: { diff --git a/app/models/consolidacao_motorista.rb b/app/models/consolidacao_motorista.rb index a4b8d13..9ddf405 100644 --- a/app/models/consolidacao_motorista.rb +++ b/app/models/consolidacao_motorista.rb @@ -1,5 +1,9 @@ # 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) }, diff --git a/spec/models/table_names_spec.rb b/spec/models/table_names_spec.rb new file mode 100644 index 0000000..b0b9642 --- /dev/null +++ b/spec/models/table_names_spec.rb @@ -0,0 +1,17 @@ +require 'rails_helper' + +# Trava os nomes de tabela contra quebras do inflector pt-BR +# (config/initializers/inflections.rb). O composto "ConsolidacaoMotorista" +# já resolveu para o singular errado em produção, derrubando /motorista. +RSpec.describe 'Nomes de tabela dos models' do + { + Consolidacao => 'consolidacoes', + ConsolidacaoMotorista => 'consolidacao_motoristas', + ConsolidacaoEntrega => 'consolidacao_entregas', + Configuracao => 'configuracoes' + }.each do |model, tabela| + it "#{model} aponta para #{tabela}" do + expect(model.table_name).to eq(tabela) + end + end +end