2016-08-01 10 views
1

Ich verwende Devise für Benutzeranmeldungen in meiner Rails App. Die Users-Tabelle hat eine Spalte namens admin, die boolesch ist. Ich möchte es so einstellen, dass der Wert von admin automatisch für jeden neuen Benutzer, der sich anmeldet, auf false voreingestellt ist. Ich habe verschiedene Ansätze ausprobiert, aber nichts scheint zu funktionieren.Devise - Standardwerte für neue Benutzer festlegen

Ich bin auf der Suche nach so etwas wie dies geschehen kann:

class ApplicationController < ActionController::Base 

    def configure_permitted_parameters 
    devise_parameter_sanitizer.for(:sign_up) << :first_name 
    devise_parameter_sanitizer.for(:sign_up) << :last_name 
    devise_parameter_sanitizer.for(:sign_up) << :phone 
    devise_parameter_sanitizer.for(:sign_up) << {:admin => false} 
    end 
end 

Obwohl dies, wie gesagt, nicht funktioniert. Aber so etwas. Irgendwelche Vorschläge würden sehr geschätzt.

Antwort

2

Sie sollten den Standardwert eines Attributs im Modell festlegen. Bei der Migration:

add_column :admin, :boolean, :default => false 

können Sie dann sicher, dass der Wert auf Spar-Modus eingerichtet:

before_save :default_admin 
def default_admin 
    self.admin ||= false 
end 
+0

die 'before_save' und' default_admin' Methode sind in 'app/models/user.rb' ?????? – inye

2

eine richtigere Antwort ist:

# models/user.rb 
before_create :default_admin 
def default_admin 
    self.admin ||= false 
end 

weil nur auf create und keine in uptade wie before_save

Verwandte Themen