【问题标题】:Devise_token_auth conflicts?Devise_token_auth 冲突?
【发布时间】:2019-04-11 07:10:59
【问题描述】:

使用默认 --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 错误。

还尝试将设计添加到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


    【解决方案1】:

    这是一个设计问题,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

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

    【讨论】:

      【解决方案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'

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

      运行rake db:migrate

      您可以尝试删除 devise ,devise_token_auth gem 并尝试这些步骤吗? 如果出现任何错误,请告诉我。

      【讨论】:

      • 我已经完全一样了!!并在一个新的应用程序上进行了尝试:- rake db 错误:迁移:- NoMethodError: undefined method devise' for User(调用'User.connection' 建立连接):Class`
      • @AmanRelan 你能在用户模型中添加extend Devise::Models 并检查相同吗?
      • 那行得通!也感谢您的帮助!
      【解决方案3】:

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

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

      2) 运行 rails g devise:install

      3) 运行 rails generate devise_token_auth:install User auth

      4) 运行 rails db:migrate

      【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-03-22
      • 1970-01-01
      • 2011-11-22
      • 2016-02-25
      • 2011-08-04
      • 2021-06-17
      • 1970-01-01
      相关资源
      最近更新 更多