Devise_token_auth冲突?

时间:2019-04-11 07:10:59

标签: ruby-on-rails ruby devise ruby-on-rails-5 devise-token-auth

使用默认的--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文件抛出错误

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

在注释掉这些行之后,它将向包含以下内容的应用程序控制器抛出错误: include DeviseTokenAuth::Concerns::SetUserByToken 注释掉这一行之后,我得到了devise:orm错误。

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

预期的迁移,

遇到设计错误

该如何解决?

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

3 个答案:

答案 0 :(得分:2)

这是一个设计问题,ActiveRecord ORM已在gem内部进行了硬编码,之前已进行了更改。可以通过创建和添加以下文档中提到的devise初始化程序来解决。

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 :(得分: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,devise_token_auth gem并尝试以下步骤吗? 让我知道是否出现任何错误。

答案 2 :(得分:0)

我收到此错误,这对我来说是一个解决方法。

1)在Gemfile中添加“ devise_token_auth” gem。

2)运行rails g devise:install

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

4)运行rails db:migrate