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 № 1Ich 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.