当向应用程序添加时,现有用户犯忘记运行安装程序的错误时,数据库似乎无法迁移,并且在运行NoMethodError时无法设计路由:用户未定义的方法“Devise”(调用'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 & bundle安装
4.现在,创建一个用户模型(就像在向应用程序添加Devise之前已经存在了一个用户模型一样),使用rails generate model User进行此操作。
5-现在犯忘记运行本身的错误。
现在使用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文件中,但设计路线似乎没有加载。
发布于 2021-03-13 21:14:03
错误
当您将devise添加到已有用户的应用程序而忘记运行rails generate devise:install时,就会显式地发生这种情况。
要修复:运行rails generate devise:install
https://stackoverflow.com/questions/66618593
复制相似问题