2011-02-08 2 views
1

Не совсем уверен, что произошло здесь, так как Devise был, работающий до недавнего времени.Rails: Devise возвращает «Invalid Strategy ...»

Вкратце, у меня есть Devise настроенный для работы с Omniauth. Когда я пытаюсь запустить локальный сервер, у меня возникает несколько проблем.

Терминал представляет собой предупреждение:

You provided devise_for :users but there is no model User defined in your application 

При попытке фактически посетить сайт в браузере, я получаю:

Invalid strategy rememberable 

Я проверил свою пользовательскую модель, разработать инициализатору, и маршруты, и все, кажется, проверяют. Я также проверил, что таблицы существуют в моей базе данных и доступны. Вот отдельные файлы:

User.rb

class User < ActiveRecord::Base 
    devise :database_authenticatable, :registerable, 
    :recoverable, :rememberable, :trackable, :twitter_oauth, :oauthable 

    attr_accessible :email, :password, :password_confirmation, :remember_me 

    def apply_omniauth(omniauth) 
    case omniauth['provider'] 
    when 'facebook' 
     self.apply_facebook(omniauth) 
    when 'open_id' 
     self.email = omniauth['user_info']['email'] if email.blank? 
    end 
    authentications.build(:provider => omniauth['provider'], :uid => omniauth['uid'], :token =>(omniauth['credentials']['token'] rescue nil)) 
    end 

    def facebook 
    @fb_user ||= FbGraph::User.me(self.authentications.find_by_provider('facebook').token) 
    end 

    def password_required? 
    (authentications.empty? || !password.blank?) && super 
    end 

    protected 

    def apply_facebook(omniauth) 
     if (extra = omniauth['extra']['user_hash'] rescue false) 
     self.email = (extra['email'] rescue '') 
     end 
    end 
end 

Разрабатывают инициализатор

Devise.setup do |config| 
    config.mailer_sender = "[email protected]" 
    require 'devise/orm/active_record' 
    config.stretches = 10 
    config.pepper = "..." 
end 

routes.rb

Project::Application.routes.draw do 
    match '/auth/:provider/callback' => 'authentications#create' 

    devise_for :users, :controllers => {:registrations => 'registrations'} 
    resources :authentications 
end 

ответ

0

Я также использую OmniAuth и Разрабатывают в моем http://eq2mission.flame.org/ сайте , поэтому мне с этим нужно сравнивать.

Вот различие я вижу между моим и вашим использованием:

(1) Я не имею DEViSE флагов для: twitter_oauth или: oauthable в моей модели пользователя.

(2) У меня есть устройство: допустимо в моей модели пользователя.

Помимо этого, похоже, что мы оба начали с общей базы, так как код настолько похож.

+0

это было, фактически. Похоже, у меня был какой-то оставшийся багаж из предыдущего метода авторизации, который я использовал. –