Omniauth“与” STI和设计(Omniauth “with” STI and devise)

2019-08-03 04:58发布

我没有结果想通了。 我有一个型号命名用户,并与STI风扇和艺术家,这样的机型:

class User < ActiveRecord::Base
    devise :database_authenticatable, :registerable, :confirmable, :lockable,
     :recoverable, :rememberable, :trackable, :validatable, **:omniauthable**
end

和我的其他车型

Class Artist < User end
Class Fan < User end

我的路线

devise_for :users
devise_for :artists
devise_for :fans

我在尝试运行我的服务器或别的我得到这个错误的问题

Wrong OmniAuth configuration. If you are getting this exception, it means that either:

1) You are manually setting OmniAuth.config.path_prefix and it doesn't match the Devise one
2) You are setting :omniauthable in more than one model
3) You changed your Devise routes/OmniAuth setting and haven't restarted your server

我的应用程序是先进的,不想回去重构它,任何帮助会感激

Answer 1:

答案可以发现在这里 。

设计得到混合,因为你正在呼吁devise_for为三种不同的模式,其中之一是使用omniauthable模块。

或者:

  1. 删除所有devise_for方法,除了:users

  2. 或删除omniauthable从用户模型模块,创建自己的omn​​iauth路线和停止使用色器件的中间件通过移动omn​​iauth配置到一个新文件。 所以,与其在具有这种devise.rb

     Devise.setup do |config| config.omniauth :twitter, ENV['TWITTER_KEY'], ENV['TWITTER_SECRET'] end 

    你现在有这个在您的新文件omniauth.rb

     Rails.application.config.middleware.use OmniAuth::Builder do provider :twitter, ENV['TWITTER_KEY'], ENV['TWITTER_SECRET'] end 

    在简单OmniAuth的Railscast应该可以帮助您设置此功能。



文章来源: Omniauth “with” STI and devise