获取 Rails 中现有 Postgres 视图的"Relation does not exists"



我试图将现有的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:resetrake 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为什么不能正确查询视图,有什么想法吗?或者为什么视图没有正确创建
提前感谢

它不应该是小写的吗:consultants_clients_tasks?

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

错误消息似乎表明数据库缺少reports_consultants_clients_tasks的表。检查db/schemas.rb,看看是否有"reports_consultants_clients_tasks"

如果你不这样做,也许你需要迁移数据库

rake db:migrate

最新更新