/ / Rails: Entwickeln Sie die Rückkehr zu "Invalid Strategy ..." - Ruby-on-Rails, Routen, Entwickeln

Rails: Devise returning "Invalid Strategy ..." - Ruby-on-Rails, Routen, Devices

Ich bin mir nicht sicher, was hier passiert ist, als Devise war arbeiten bis vor kurzem.

Kurz gesagt, ich habe Devise für die Zusammenarbeit mit Omniauth konfiguriert. Wenn ich versuche, meinen lokalen Server auszuführen, treten einige Probleme auf.

Das Terminal zeigt eine Warnung an:

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

Wenn ich versuche, die Site tatsächlich in einem Browser aufzurufen, erhalte ich Folgendes:

Invalid strategy rememberable

Ich habe mein Benutzermodell, den Initialisierer und die Routen überprüft und alle scheinen sich auszuchecken. Ich habe auch überprüft, ob die Tabellen in meiner Datenbank vorhanden sind und auf sie zugegriffen werden kann. Hier sind die einzelnen Dateien:

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

Initialisierer erstellen

Devise.setup do |config|
config.mailer_sender = "please-change-me@config-initializers-devise.com"
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

Antworten:

0 für die Antwort № 1

Ich benutze auch OmniAuth und Devise in meinem http://eq2mission.flame.org/ Website, so habe ich ziemlich viel direkt mit zu vergleichen.

Hier sind die Unterschiede, die ich zwischen meiner Verwendung und Ihrer sehen kann:

(1) Ich habe keine Geräteflags für: twitter_oauth oder: oauthable in meinem Benutzermodell.

(2) Ich habe ein Gerät, das in meinem Benutzermodell validierbar ist.

Abgesehen davon sieht es so aus, als hätten wir beide von einer gemeinsamen Basis ausgegangen, da der Code so ähnlich ist.