1

Ich versuche, eine vorhandene PostgreSQL-Ansicht (welches Erstellungsskript wurde auf einem anderen Computer ausgeführt und getestet) einer Rails-Anwendung zuzuordnen, aber ich bekomme PG::UndefinedTable: ERROR: relation "reports_consultants_clients_tasks" does not exist."Relation existiert nicht" für vorhandene Postgres-Ansicht in Rails

Erstens ist dies meine Routen-Datei:

Rails.application.routes.draw do 
    namespace :reports do 
    get 'consultants_clients_tasks/index' 
    end 
    # rest of the file 
end 

Der Controller:

class Reports::ConsultantsClientsTasksController < ApplicationController 
    def index 
    @consultants_clients_tasks = ConsultantsClientsTask.all 
    end 
end 

Das Modell (Ich habe versucht, mit und ohne Tabellennamen, wie auch immer, sollte es die Konvention folgenden werden .. .? rechts)

class Reports::ConsultantsClientsTask < ActiveRecord::Base 
    #self.table_name = "CONSULTANTS_CLIENTS_TASKS" 
end 

Dies ist meine Migration die Ansicht zu erstellen:

class CreateReportsConsultantsClientsTasksSqlView < ActiveRecord::Migration 
    def change 
    execute <<-SQL 
     CREATE VIEW CONSULTANTS_CLIENTS_TASKS AS 
     -- rest of the script 
     ; 
    SQL 
    end 
end 

Ich habe versucht, sowohl rake db:reset oder rake db:drop db:create db:migrate und in beiden Fällen läuft die Ansicht nicht korrekt erstellt wird.

Wenn ich diese (die Abfrage, die von Active) laufen, von einer psql Konsole:

SELECT "CONSULTANTS_CLIENTS_TASKS".* FROM "CONSULTANTS_CLIENTS_TASKS"; 

ich diesen Fehler:

ERROR: relation "CONSULTANTS_CLIENTS_TASKS" does not exist 
LINE 1: SELECT "CONSULTANTS_CLIENTS_TASKS".* FROM "CONSULTANTS_CLIEN... 

jedoch diese andere Abfrage ausgeführt wird:

select * from CONSULTANTS_CLIENTS_TASKS; 

erhält keine Fehler:

Ich habe nicht alle Felder der Ansicht in meinem .html.erb abgebildet, aber ich denke nicht, dass das ein Problem ist.

Also, irgendwelche Ideen, warum Rails ist nicht in der Lage, die Ansicht richtig abzufragen? Oder warum wird die Ansicht nicht richtig erstellt?
Vielen Dank im Voraus

+2

Sollte es nicht Kleinbuchstaben 'Consultants_clients_tasks' sein? –

+0

Bitte post thsi als Antwort und ich werde es akzeptieren. Das war das Problem – jmm

+1

PostgreSQL faltet unnotierte Bezeichner zu Kleinbuchstaben, Rails zitieren Kennungen hinter Ihrem Rücken. Ihre Ansicht heißt "clients_clients_tasks", aber Ihr Code sucht nach "CONSULTANTS_CLIENTS_TASKS" '. –

Antwort

1

Sollte es nicht klein geschrieben werden: consultants_clients_tasks?

0

PG::UndefinedTable: ERROR: relation "reports_consultants_clients_tasks" does not exist.

Die Fehlermeldungen scheint für reports_consultants_clients_tasks dass Datenbank fehlt die Tabelle vor. Überprüfen db/schemas.rb und sehen Sie, wenn Sie „reports_consultants_clients_tasks“ haben

Wenn Sie nicht vielleicht müssen Sie die Datenbank migrieren

rake db:migrate