我试图将现有的PostgreSQL视图(在不同的计算机上运行和测试的创建脚本)映射到Rails应用程序,但我不断获得PG::UndefinedTable: ERROR: relation "reports_consultants_clients_tasks" does not exist
。
首先,这是我的路线档案:
Rails.application.routes.draw do
namespace :reports do
get 'consultants_clients_tasks/index'
end
# rest of the file
end
控制器:
class Reports::ConsultantsClientsTasksController < ApplicationController
def index
@consultants_clients_tasks = ConsultantsClientsTask.all
end
end
模型(无论如何,我尝试使用和不使用表名,它应该遵循惯例......对吗?)
class Reports::ConsultantsClientsTask < ActiveRecord::Base
#self.table_name = "CONSULTANTS_CLIENTS_TASKS"
end
这是我创建视图的迁移:
class CreateReportsConsultantsClientsTasksSqlView < ActiveRecord::Migration
def change
execute <<-SQL
CREATE VIEW CONSULTANTS_CLIENTS_TASKS AS
-- rest of the script
;
SQL
end
end
我尝试同时运行rake db:reset
或rake db:drop db:create db:migrate
,但在这两种情况下,视图都没有正确创建。
如果我从psql控制台运行它(由ActiveRecord生成的查询):
SELECT "CONSULTANTS_CLIENTS_TASKS".* FROM "CONSULTANTS_CLIENTS_TASKS";
我收到此错误:
ERROR: relation "CONSULTANTS_CLIENTS_TASKS" does not exist
LINE 1: SELECT "CONSULTANTS_CLIENTS_TASKS".* FROM "CONSULTANTS_CLIEN...
但是,运行此其他查询:
select * from CONSULTANTS_CLIENTS_TASKS;
没有错误:
consultant_name | client_name | task_name | task_date | task_duration | consultant_cost | client_amount | task_cost_related
-----------------+-------------+-----------+-----------+---------------+-----------------+---------------+-------------------
(0 rows)
我还没有映射我.html.erb
中所有观看的字段,但我认为这不是问题。
那么,任何有关Rails为何无法正确查询View的想法?或者为什么没有正确创建视图?
提前致谢
答案 0 :(得分:2)
不应该是小写的:consultants_clients_tasks?
答案 1 :(得分:0)
PG::UndefinedTable: ERROR: relation "reports_consultants_clients_tasks" does not exist.
错误消息似乎表明数据库缺少reports_consultants_clients_tasks的表。检查db / schemas.rb并查看是否有&#34; reports_consultants_clients_tasks&#34;
如果您不想迁移数据库
rake db:migrate