0

将设计添加到现有用户错误忘记运行安装程序的应用程序时,似乎使应用程序崩溃,数据库无法迁移,并且在运行时设计路由不可用rails routes;NoMethodError:未定义的方法“设计”用户(调用“User.connection”建立连接

环境

Ruby 2.6.3 Rails 6.1.3 设计4.7.3

示例应用

https://github.com/jasonfb/DEVISE002

重现步骤

1-rails new TestApp

2-cd TestApp/

3-添加gem devise到 Gemfile 和捆绑安装

4- 现在,创建一个用户模型(就好像在将设计添加到应用程序之前已经存在用户模型一样),执行此操作rails generate model User

5-现在了忘记运行设计安装程序本身的错误

6-现在在您已经创建的用户上运行设计生成器rails generate devise User

7-运行rails db:migrate。此迁移将失败,并引发以下错误:

(没有意义,因为 devise 已安装到 gem 文件中)

jason@MBP ~/Work/_LEARNING/Turbo-Rails/DEVISE002 (master) $ rails db:migrate
rails aborted!
NoMethodError: undefined method `devise' for User (call 'User.connection' to establish a connection):Class
/Users/jason/Work/_LEARNING/Turbo-Rails/DEVISE002/app/models/user.rb:4:in `<class:User>'
/Users/jason/Work/_LEARNING/Turbo-Rails/DEVISE002/app/models/user.rb:1:in `<main>'
/Users/jason/Work/_LEARNING/Turbo-Rails/DEVISE002/config/routes.rb:2:in `block in <main>'
/Users/jason/Work/_LEARNING/Turbo-Rails/DEVISE002/config/routes.rb:1:in `<main>'
/Users/jason/Work/_LEARNING/Turbo-Rails/DEVISE002/config/environment.rb:5:in `<main>'
/Users/jason/Work/_LEARNING/Turbo-Rails/DEVISE002/bin/rails:5:in `<top (required)>'
/Users/jason/Work/_LEARNING/Turbo-Rails/DEVISE002/bin/spring:10:in `block in <top (required)>'
/Users/jason/Work/_LEARNING/Turbo-Rails/DEVISE002/bin/spring:7:in `tap'
/Users/jason/Work/_LEARNING/Turbo-Rails/DEVISE002/bin/spring:7:in `<top (required)>'
Tasks: TOP => db:migrate => db:load_config => environment
(See full trace by running task with --trace)

症状1:数据库不迁移,rails db:migrate出现上述错误崩溃。

症状 2:在我犯了这个错误的一个测试应用程序中,设计路线似乎没有加载,尽管devise_for :users在 routes.rb 文件中。

4

1 回答 1

0

错误

当您将设计添加到具有现有用户的应用程序并且您忘记运行时,这会显式发生rails generate devise:install

修复:运行rails generate devise:install

于 2021-03-13T21:14:03.073 回答