2010-12-14 14 views
3

Ich habe meine Rails App Setup mit Devise, aber es ist immer noch in den Entwicklungsphasen. Ich habe auch eine Thor-Aufgabe, die den Standard-Admin-Benutzer erstellt.Rails: Customize Devise Bestätigungsmodul?

Problem ist, dass Devise den Admin-Benutzer nicht auf der Site anmelden lässt, bis der Account bestätigt wurde. Gibt es eine Möglichkeit, das Bestätigungsmodul für die Erstellung bestimmter Benutzer wie Admin zu deaktivieren?

Meine Thor Aufgabe:

class Setup < Thor 
    desc "create_admin [EMAIL] [PASSWORD]", "Creates the administrative user." 
    def create_admin(email = "[email protected]", password = "testpassword123") 
    require File.expand_path('config/environment.rb') # load Rails environment 
    admin = User.create(:email => email, :password => password, :password_confirmation => password) 
    admin.assign_role :admin 
    puts "Admin user (#{ email }) created." 
    end 
end 

Antwort

6

Sobald Ihr Benutzer erstellt wurde, können Sie das mitgelieferte Gerät aufrufen und bestätigen! Methode, anstatt die Datenbank direkt zu aktualisieren. ZB:

admin = User.create(:email => email, :password => password, :password_confirmation => password) 
admin.assign_role :admin 
admin.confirm! 
+0

Dies hat auch den zusätzlichen Vorteil, dass "confirmed_at" kein barrierefreies Attribut sein muss, das es den Benutzern ermöglichen würde, sich selbst zu bestätigen, ohne den eigentlichen Bestätigungsprozess durchlaufen zu müssen! –

+0

Ooo, viel sauberer. Vielen Dank! – neezer

+0

Ahh, danke dafür. Ich habe Benutzer in Seed-Daten erstellt und übermittelte den Wert "confirmed_at", ignoriert ihn jedoch. Sie müssen die Bestätigungsmethode durchlaufen. – jacklin

2

Diese

admin = User.create(:email => email, :password => password, :password_confirmation => password) 

So Ihre confirmed_at gesetzt funktionieren sollte, die das Feld devise ist verweist, wenn Bestätigung Benutzer zu überprüfen.

EDIT

Verzeihen Sie mir, wenn dies wie ein Hack scheint aber dies scheint für mich zu arbeiten. Nachdem die obige Zeile ausgeführt wird,

admin.update_attributes(:confirmed_at => Time.now) 
+0

Ich habe das gemacht, aber der Benutzer wird immer noch mit 'confirmed_at' als' nil' erstellt. Was gibt? – neezer

+0

Ich habe die Antwort bearbeitet. Funktioniert es jetzt? – Shreyas

+0

Nein, immer noch als 'nil' registriert. – neezer

-1

coment nur :confirmable in User- oder Admin Modell

devise :database_authenticatable, :recoverable, :rememberable, :trackable, #:confirmable... 

In config/inicializers/devise.rb Sie hier festlegen können, wie viele Zeit Benutzer sein Konto bestätigen

+0

Mein Administratorbenutzer ist vom Typ Benutzer; Ich will immer noch: bestätigbar für jeden anderen Benutzertyp, nur nicht für Admin. – neezer