Corrige 500 no painel do motorista (tabela consolidacao_motorista inexistente)
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>
This commit is contained in:
@@ -1,5 +1,7 @@
|
|||||||
# app/models/configuracao.rb
|
# app/models/configuracao.rb
|
||||||
class Configuracao < ApplicationRecord
|
class Configuracao < ApplicationRecord
|
||||||
|
self.table_name = 'configuracoes'
|
||||||
|
|
||||||
# Chaves válidas do sistema
|
# Chaves válidas do sistema
|
||||||
CHAVES = %w[
|
CHAVES = %w[
|
||||||
preco_entrega
|
preco_entrega
|
||||||
|
|||||||
@@ -1,5 +1,7 @@
|
|||||||
# app/models/consolidacao.rb
|
# app/models/consolidacao.rb
|
||||||
class Consolidacao < ApplicationRecord
|
class Consolidacao < ApplicationRecord
|
||||||
|
self.table_name = 'consolidacoes'
|
||||||
|
|
||||||
belongs_to :criador, class_name: 'User', foreign_key: :created_by
|
belongs_to :criador, class_name: 'User', foreign_key: :created_by
|
||||||
belongs_to :finalizador, class_name: 'User', foreign_key: :finalizado_por, optional: true
|
belongs_to :finalizador, class_name: 'User', foreign_key: :finalizado_por, optional: true
|
||||||
belongs_to :arquivador, class_name: 'User', foreign_key: :arquivado_por, optional: true
|
belongs_to :arquivador, class_name: 'User', foreign_key: :arquivado_por, optional: true
|
||||||
|
|||||||
@@ -1,5 +1,8 @@
|
|||||||
# app/models/consolidacao_entrega.rb
|
# app/models/consolidacao_entrega.rb
|
||||||
class ConsolidacaoEntrega < ApplicationRecord
|
class ConsolidacaoEntrega < ApplicationRecord
|
||||||
|
# Nome da tabela fixado (mesmo motivo de ConsolidacaoMotorista — inflector pt-BR).
|
||||||
|
self.table_name = 'consolidacao_entregas'
|
||||||
|
|
||||||
belongs_to :consolidacao
|
belongs_to :consolidacao
|
||||||
|
|
||||||
enum tipo: {
|
enum tipo: {
|
||||||
|
|||||||
@@ -1,5 +1,9 @@
|
|||||||
# app/models/consolidacao_motorista.rb
|
# app/models/consolidacao_motorista.rb
|
||||||
class ConsolidacaoMotorista < ApplicationRecord
|
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
|
belongs_to :consolidacao
|
||||||
has_many :consolidacao_entregas,
|
has_many :consolidacao_entregas,
|
||||||
->(cm) { where(motorista_nome: cm.motorista_nome) },
|
->(cm) { where(motorista_nome: cm.motorista_nome) },
|
||||||
|
|||||||
17
spec/models/table_names_spec.rb
Normal file
17
spec/models/table_names_spec.rb
Normal file
@@ -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
|
||||||
Reference in New Issue
Block a user