devise_token_auth有冲突?

4
使用默认的`--api`标签在Rails 5中创建了一个新的API,并使用以下命令安装了`devise_token_auth` gem:
``` rails generate devise_token_auth:install User auth ```
在运行`rake:db:migrate`时,出现了错误`undefined method 'devise' for User (call 'User.connection' to establish a connection)`。这很奇怪,因为`devise_token_auth`是基于`devise`构建的。
所以,注释掉路由会导致出现错误,指向包含以下内容的user.rb文件:
```ruby devise :database_authenticatable, :registerable, :recoverable, :rememberable, :trackable, :validatable,:omniauthable include DeviseTokenAuth::Concerns::User ```
注释掉这些行后,它会抛出到包含以下内容的应用控制器的错误:
```ruby include DeviseTokenAuth::Concerns::SetUserByToken ```
注释掉这一行后,会出现`devise:orm`错误。
还尝试将`devise`添加到Gemfile并为用户安装`devise`,但也失败了,再次抛出错误`undefined method 'devise' for User (call 'User.connection' to establish a connection)`。
期望迁移成功,但出现了`Devise`错误。
要解决此问题,应该检查`config/initializers/devise.rb`文件是否存在,并确保`config.authentication_keys`设置正确。如果没有此文件,请创建该文件并编写必要的配置。如果仍然出现问题,您可能需要检查数据库连接是否正确。
3个回答

7
这是一个设备问题,之前gem中硬编码了ActiveRecord ORM,现在已经更改。可以通过创建并添加如下文档中所述的设备初始化程序来解决此问题。

https://devise-token-auth.gitbook.io/devise-token-auth/config/initialization

还有一种解决方法,可以在您的user.rb模型文件中添加以下内容。

extend Devise::Models

devise_token_auth 中还存在一个未解决的问题

https://github.com/lynndylanhurley/devise_token_auth/issues/1276

您可以跟进此问题/添加您的想法以解决此问题。


2

你是否按照以下步骤操作:

gemfile中引入gem:

gem 'devise_token_auth'

运行生成器:

rails generate devise_token_auth:install User auth

检查User模型中是否添加了以下行:

include DeviseTokenAuth::Concerns::User

检查Application controller中是否添加了以下行:

include DeviseTokenAuth::Concerns::SetUserByToken

检查routes.rb中是否添加了以下行:

mount_devise_token_auth_for 'User', at: 'auth'

在User模型中添加extend Devise::Models

运行rake db:migrate

如果有错误,请尝试删除devise、devise_token_auth gem并重试这些步骤。请告诉我是否出现任何错误。

最初的回答


我已经完全按照您所说的做了!!并尝试在新应用程序上运行: rake db:migrate时出现错误:- NoMethodError: undefined method 'devise' for User (call 'User.connection' to establish a connection):Class - Aman Relan
@AmanRelan,你能在User模型中添加'extend Devise::Models'并检查一下吗? - Nandhini
那就是可行的!谢谢你们的帮助! - Aman Relan

1
我得到了这个错误,以下是解决方法:

1)在Gemfile中添加“devise_token_auth”宝石。

2)运行rails g devise:install

3)运行rails generate devise_token_auth:install User auth

4)运行rails db:migrate


这个修复正好解决了这个拉取请求的问题:https://github.com/lynndylanhurley/devise_token_auth/pull/1307 - Aman Relan

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接