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
Sollte es nicht Kleinbuchstaben 'Consultants_clients_tasks' sein? –
Bitte post thsi als Antwort und ich werde es akzeptieren. Das war das Problem – jmm
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" '. –