Devise_token_auth冲突?

问题描述 投票:0回答:2

使用默认的--api标记在rails 5中创建了一个新API,并使用命令rails generate devise_token_auth:install User auth安装了devise_token_auth gem。在做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在注释掉这一行后,我得到了设计:orm错误。

还尝试添加设计到gemfile并为用户安装设备,这也失败了,再次抛出此错误undefined method 'devise' for User (call 'User.connection' to establish a connection)

预期的迁移将通过,

获得设计错误

应该怎么做来解决这个问题?

PS-这是我使用Devise_token_auth gem制作的第三个API,之前没有遇到过这个问题

ruby-on-rails ruby devise ruby-on-rails-5 devise-token-auth
2个回答
2
投票

这是一个设计问题,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-中加入宝石

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并尝试这些步骤吗?如果弹出任何错误,请告诉我。

© www.soinside.com 2019 - 2024. All rights reserved.