将设计添加到现有用户错误忘记运行安装程序的应用程序时,似乎使应用程序崩溃,数据库无法迁移,并且在运行时设计路由不可用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 文件中。