diff --git a/Erros/Imagem colada.png b/Erros/Imagem colada.png new file mode 100644 index 0000000..5c2ba27 Binary files /dev/null and b/Erros/Imagem colada.png differ diff --git a/db/migrate/20260824000001_create_notificacao_contatos.rb b/db/migrate/20260824000001_create_notificacao_contatos.rb index 1ce37a5..7f590de 100644 --- a/db/migrate/20260824000001_create_notificacao_contatos.rb +++ b/db/migrate/20260824000001_create_notificacao_contatos.rb @@ -19,7 +19,12 @@ class CreateNotificacaoContatos < ActiveRecord::Migration[7.1] add_index :grupos_contato, 'LOWER(nome)', unique: true, name: 'index_grupos_contato_nome_unico' create_table :contatos do |t| - t.references :grupo_contato, foreign_key: true, index: true + # ⚠️ `to_table:` é OBRIGATÓRIO aqui. Com `foreign_key: true` o Rails + # PLURALIZA o nome da referência para achar a tabela alvo, e o Inflector + # não fala português: `grupo_contato` → "grupo_contatos" e + # `evento_notificacao` → "evento_notificacaos". As tabelas reais são + # `grupos_contato` e `eventos_notificacao` (plural no primeiro termo). + t.references :grupo_contato, foreign_key: { to_table: :grupos_contato }, index: true t.string :nome, null: false # E.164 normalizado (+5511920051157). Vazio = contato só de e-mail. diff --git a/db/migrate/20260824000002_create_notificacao_eventos.rb b/db/migrate/20260824000002_create_notificacao_eventos.rb index 86d3e86..4555793 100644 --- a/db/migrate/20260824000002_create_notificacao_eventos.rb +++ b/db/migrate/20260824000002_create_notificacao_eventos.rb @@ -36,8 +36,13 @@ class CreateNotificacaoEventos < ActiveRecord::Migration[7.1] add_index :eventos_notificacao, :chave, unique: true create_table :grupo_evento_assinaturas do |t| - t.references :grupo_contato, null: false, foreign_key: true - t.references :evento_notificacao, null: false, foreign_key: true + # ⚠️ `to_table:` é OBRIGATÓRIO aqui. Com `foreign_key: true` o Rails + # PLURALIZA o nome da referência para achar a tabela alvo, e o Inflector + # não fala português: `grupo_contato` → "grupo_contatos" e + # `evento_notificacao` → "evento_notificacaos". As tabelas reais são + # `grupos_contato` e `eventos_notificacao` (plural no primeiro termo). + t.references :grupo_contato, null: false, foreign_key: { to_table: :grupos_contato } + t.references :evento_notificacao, null: false, foreign_key: { to_table: :eventos_notificacao } t.string :canal, null: false, default: 'ambos' # ambos | whatsapp | email t.boolean :ativo, null: false, default: true t.timestamps diff --git a/db/migrate/20260824000003_create_notificacao_envios.rb b/db/migrate/20260824000003_create_notificacao_envios.rb index 77f27b4..3680a6e 100644 --- a/db/migrate/20260824000003_create_notificacao_envios.rb +++ b/db/migrate/20260824000003_create_notificacao_envios.rb @@ -9,7 +9,12 @@ class CreateNotificacaoEnvios < ActiveRecord::Migration[7.1] def change create_table :notificacao_envios do |t| - t.references :evento_notificacao, foreign_key: true, index: true + # ⚠️ `to_table:` é OBRIGATÓRIO aqui. Com `foreign_key: true` o Rails + # PLURALIZA o nome da referência para achar a tabela alvo, e o Inflector + # não fala português: `grupo_contato` → "grupo_contatos" e + # `evento_notificacao` → "evento_notificacaos". As tabelas reais são + # `grupos_contato` e `eventos_notificacao` (plural no primeiro termo). + t.references :evento_notificacao, foreign_key: { to_table: :eventos_notificacao }, index: true t.references :contato, foreign_key: true, index: true t.references :user, foreign_key: true, index: true diff --git a/db/migrate/20260824000005_create_mensagem_templates.rb b/db/migrate/20260824000005_create_mensagem_templates.rb index 38a5f6e..2067697 100644 --- a/db/migrate/20260824000005_create_mensagem_templates.rb +++ b/db/migrate/20260824000005_create_mensagem_templates.rb @@ -11,7 +11,12 @@ class CreateMensagemTemplates < ActiveRecord::Migration[7.1] def change create_table :mensagem_templates do |t| - t.references :evento_notificacao, null: false, foreign_key: true + # ⚠️ `to_table:` é OBRIGATÓRIO aqui. Com `foreign_key: true` o Rails + # PLURALIZA o nome da referência para achar a tabela alvo, e o Inflector + # não fala português: `grupo_contato` → "grupo_contatos" e + # `evento_notificacao` → "evento_notificacaos". As tabelas reais são + # `grupos_contato` e `eventos_notificacao` (plural no primeiro termo). + t.references :evento_notificacao, null: false, foreign_key: { to_table: :eventos_notificacao } t.string :canal, null: false # whatsapp | email t.string :assunto # só e-mail