PG::Error: 错误:关系“用户”不存在

Posted

技术标签:

【中文标题】PG::Error: 错误:关系“用户”不存在【英文标题】:PG::Error: ERROR: relation "users" does not exist 【发布时间】:2012-07-16 19:14:32 【问题描述】:

很抱歉打扰您,但我对这个错误有很多疑问。 首先这是我的 user_controller rspec 文件

需要'spec/spec_helper'

describe UserController do

it "create new user" do
    post "create"
    assigns[:users].should_not be_new_record
end
end

这是我的用户控制器

 class UserController < ApplicationController
   def create
     @users = User.new
     if @users.save
       flash[:notice] = 'new user was successfully created.'
     else
       render :action => :new
     end
   end

   def new
     @user = User.new
   end
 end

还有我的 routes.rb(我认为问题就在这里,对不起,我是这门语言的新手)

Estaciones::Application.routes.draw do
  devise_for :users

  root :to => "home#index"
  resources :user
end

当我尝试测试我的 user_controller_rspec 时,我得到了这个错误

失败:

1) UserController create new user
   Failure/Error: post "create"
   ActiveRecord::StatementInvalid:
     PG::Error: ERROR:  relation "users" does not exist
     LINE 4:              WHERE a.attrelid = '"users"'::regclass
                                             ^
     :             SELECT a.attname, format_type(a.atttypid, a.atttypmod), d.adsrc, a.attnotnull
                   FROM pg_attribute a LEFT JOIN pg_attrdef d
                     ON a.attrelid = d.adrelid AND a.attnum = d.adnum
                    WHERE a.attrelid = '"users"'::regclass
                    AND a.attnum > 0 AND NOT a.attisdropped
                  ORDER BY a.attnum
 # ./app/controllers/user_controller.rb:3:in `new'
 # ./app/controllers/user_controller.rb:3:in `create'
 # ./spec/controllers/user_controller_spec.rb:6

 Finished in 0.01722 seconds
 1 example, 1 failure

 Failed examples:

 rspec ./spec/controllers/user_controller_spec.rb:5 # UserController create new user

我该如何解决...谢谢

【问题讨论】:

您在下面列出了正确答案。你应该接受它 【参考方案1】:

运行这个

 rake db:migrate

然后这个

 rake db:test:prepare

【讨论】:

是的,您需要为 rspec 执行此操作 我将您的问题编辑为看起来像真正的代码...下次在任何代码前添加 4 个空格。 好的,谢谢... /new 带有 :handlers=>[:haml, :builder, :coffee, :erb], :locale=>[:en], :formats=>[:html]。在以下位置搜索:*“#<:rails::viewrendering::emptytemplatepathsetdecorator:0x13728cbd8>” 首先...为什么你有一个 user_controller 而不是 users_controller?二、有没有app/views/user/new.html.erb文件? 在创建新用户资源后推送导致 heroku 部署出现相同错误。带有 heroku 工具带的命令是 heroku run rake db:migrate【参考方案2】:

另一种变体

RAILS_ENV=test rake db:migrate

【讨论】:

以上是关于PG::Error: 错误:关系“用户”不存在的主要内容,如果未能解决你的问题,请参考以下文章

错误:pg_repack 失败并出现错误:错误:列“relhasoids”不存在

Rails ActiveRecord:PG::Error:错误:列引用“created_at”不明确

PG undefinedtable 错误关系用户不存在

本地项目部署到服务器 启动 报错 数据表不存原因 解决

Rails - 致命:数据库“myapp_development”不存在

Rails 报告找不到存在的列