Devise_token_auth 冲突?

Devise_token_auth conflicts?

使用默认 --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 是建立在设计之上的..

因此,注释掉路由会向包含

的 user.rb 文件抛出错误

devise :database_authenticatable, :registerable, :recoverable, :rememberable, :trackable, :validatable,:omniauthable include DeviseTokenAuth::Concerns::User

注释完这些行后,它会向应用程序控制器抛出错误,其中包含: include DeviseTokenAuth::Concerns::SetUserByToken 注释掉这一行后,我得到 devise:orm 错误。

还尝试将设计添加到 gem 文件并为用户安装设计,同样失败,再次抛出此错误 undefined method 'devise' for User (call 'User.connection' to establish a connection)

预计要进行的迁移,

获取设计错误

应该如何解决这个问题?

PS- 这是第三个 API 我正在使用 Devise_token_auth gem,之前没有遇到这个问题

您是否执行了以下步骤 -

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'

在用户模型中添加extend Devise::Models

运行 rake db:migrate

您可以尝试移除该装置,devise_token_auth gem 并尝试这些步骤吗? 如果弹出任何错误,请告诉我。

这是一个设计问题,ActiveRecord ORM 是在 gem 内部硬编码的,现在已更改。这可以通过创建和添加以下文档中提到的设计初始值设定项来解决。

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

你可以在哪里跟进这个问题/添加你的想法来解决这个问题。

我遇到了这个错误,这对我来说是一个修复。

1) 在 Gemfile 中添加 'devise_token_auth' gem.

2) 运行 rails g devise:install

3) 运行 rails 生成 devise_token_auth:install 用户授权

4) 运行 rails db:migrate