【问题标题】:Rails app, installing Devise, rake db:migrate errorRails 应用程序,安装 Devise,rake db:migrate 错误
【发布时间】:2013-08-19 03:48:53
【问题描述】:

尝试重新安装 Devise。 Postgresql 上的 Rails 4

我已按照 Devise 的说明(如添加 devise gem/bundle install)并对我的环境/application.rb 进行了更改/添加了我的 flash 消息

然后跑了

rails generate devise User

得到了这个……

invoke  active_record

    create    db/migrate/20130819025615_add_devise_to_users.rb
    insert    app/models/user.rb
    route  devise_for :users

但问题是当我尝试运行 rake db:migrate 时出现此错误

== AddDeviseToUsers: migrating =============================================== -- change_table(:users) rake aborted! An error has occurred, this and all later migrations canceled: PG::UndefinedTable: ERROR: relation "users" does not exist : ALTER TABLE "users" ADD COLUMN "email" character varying(255) DEFAULT '' NOT NULL/Users/name/.rvm/gems/ruby-2.0.0-p195/gems/activerecord-4.0.0/lib/active_record/connection_adapters/postgresql/database_statements.rb:128:in exec'

所以我知道错误告诉我不存在表“用户”,但设计应该创建这个,所以我的主要问题是......解决这个问题的最简单方法是什么?

另外,为什么 Devise 不创建这个?这会导致未来的问题吗?

我是否应该在 postgres 中创建一个 Users 表,然后在 Devise 中再次运行该命令并让它更改必要的文件并“设计”它? (如果它甚至会这样做)

谢谢!

【问题讨论】:

  • 先尝试运行rake db:create
  • 你能粘贴你的 db/migrate/20130819025615_add_devise_to_users.rb 文件的内容吗?
  • 我认为问题出现在 development.rb 中。我也遇到了错误,我意识到这是因为我没有保存 config.action_mailer.default_url_option ={:host=>'localhost'} 并且我有一个之前使用 railscast omniauth 页面生成的 user.yml。所以有冗余,我必须覆盖,但没有看到要覆盖的评论。

标签: ruby-on-rails devise dbmigrate


【解决方案1】:

我认为 Devise 不会创建用户表。 rails generate devise User 只是生成一个将 Devise 与 User 表相关联的迁移。在您的情况下,用户表还不存在。因此,错误。首先,您应该编写一个创建 User 表的迁移。例如:

class CreateUsers < ActiveRecord::Migration
  def change
    create_table :users do |t|
    end
  end
end

然后运行rake db:migrate。通过适当地命名文件,确保创建表的迁移在之前 db/migrate/20130819025615_add_devise_to_users.rb 运行。

【讨论】:

  • 这实际上并没有解决我的问题,但这是基于给出的信息的最佳答案。任何人都可能给出的最佳答案,因此我会接受。但对于未来的任何人来说,错误都在多个 PG 数据库中。您应该删除迁移和所有相关文件,直到您可以运行 rake db:migrate 然后检查您的 pg 数据库是否有重复项,然后重新安装 pg 和任何相关文件。
  • @ChristianFlores(我是初学者)。我想我和你有同样的问题。如何检查我的 pg 数据库是否有重复项?
  • 非虚拟机。让它工作。检查 - 没有重复。重新安装了一切。很高兴。
【解决方案2】:

喂猫的方法有很多种(我对动物友好)

方法一: 1. 轨道数据库创建 2.rails 数据库设置 它执行您之前的迁移代码并创建用户和其他迁移。

方法二: - 使用“rails generate devise User”创建迁移 - 运行“rake db:迁移” 这也会做得很好。

但是,如果您需要以任何方式在用户表中添加其他字段,则迁移是一种方式。

【讨论】:

    猜你喜欢
    • 2011-01-10
    • 1970-01-01
    • 2018-10-06
    • 1970-01-01
    • 1970-01-01
    • 2016-11-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多