2016-08-01 3 views
1

J'utilise Devise pour les utilisateurs inscrits dans mon application Rails. La table Users a une colonne appelée admin, qui est booléenne. Je voudrais le définir de sorte que la valeur admin par défaut soit automatiquement false pour chaque nouvel utilisateur qui s'inscrit. J'ai essayé un certain nombre d'approches différentes, mais rien ne semble fonctionner.Devise - réglage des valeurs par défaut pour les nouveaux utilisateurs

Je cherche quelque chose comme cela se produise:

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 

Bien que cela, comme je l'ai dit, ne fonctionne pas. Mais quelque chose comme ça. Toutes les suggestions seraient très appréciées.

Répondre

2

Vous devez définir la valeur par défaut d'un attribut dans le modèle. Dans la migration:

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

Vous pouvez alors faire en sorte que la valeur est définie sur Enregistrer:

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

la méthode 'before_save' et' default_admin' sont dans 'app/models/user.rb' ?????? – inye

2

Une réponse plus correcte est:

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

parce est seulement sur create et non dans uptade comme before_save