Ruby on rails 设计can';t detect:omniauthable,但它';在那里

Ruby on rails 设计can';t detect:omniauthable,但它';在那里,ruby-on-rails,devise,omniauth,Ruby On Rails,Devise,Omniauth,我有一个RoR应用程序,运行Desive Gem进行身份验证。对于我的新API,我已经实现了Gem“Desive token auth”: 由于我希望Desive能够运行网站和API认证,因此我也遵循了以下说明中的额外提示(以及Gem Git的常见问题): 我停用了Desive的:可确认的,但激活的:全授权的。一切似乎都准备就绪,但我发现以下错误: /Users/sebastianplasschaert/.rbenv/versions/2.2.1/lib/ruby/gems/2.2.0/gems

我有一个RoR应用程序,运行Desive Gem进行身份验证。对于我的新API,我已经实现了Gem“Desive token auth”:

由于我希望Desive能够运行网站和API认证,因此我也遵循了以下说明中的额外提示(以及Gem Git的常见问题):

我停用了Desive的:可确认的,但激活的:全授权的。一切似乎都准备就绪,但我发现以下错误:

/Users/sebastianplasschaert/.rbenv/versions/2.2.1/lib/ruby/gems/2.2.0/gems/devise-3.5.2/lib/devise/rails/routes.rb:240:in `block in devise_for': Mapping omniauth_callbacks on a resource that is not omniauthable (ArgumentError)
Please add `devise :omniauthable` to the `User` model
在我的用户模型中,我从以下代码开始:

class User < ActiveRecord::Base


  # Include default devise modules. Others available are:
  # :confirmable, :lockable, :timeoutable and :omniauthable
  devise :invitable, :database_authenticatable, :registerable,
         :recoverable, :rememberable, :trackable, :validatable,
         :omniauthable
  include DeviseTokenAuth::Concerns::User
然后一切又开始工作了(但我需要它来进行API身份验证)


关于我做错了什么有什么想法吗?

出于某种原因
在删除
omniauthable
时包括developetOkenAuth::Concerns::User

我修复了将其添加回的问题:

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

谢谢你的回答@grabrielhilal。我已经找到了那个黑客并试过了。它对api部分工作正常,但它禁用了我的注册:我无法再创建新帐户。。。在你的情况下注册仍然有效吗?我现在正在处理这个问题。。。您需要覆盖
OmniAuthCallbackController
,这样您就可以创建您的用户,然后使用
登录(:user,@user,store:false,bypass:false)
您可以从这里获取一些逻辑:
devise :invitable, :database_authenticatable, :registerable,
       :recoverable, :rememberable, :trackable, :validatable,
       :omniauthable
include DeviseTokenAuth::Concerns::User
devise :omniauthable