Dans mon application, seuls les utilisateurs disposant du rôle d'administrateur peuvent créer de nouveaux utilisateurs. Dans le nouveau formulaire utilisateur, j'ai une boîte de sélection pour chacun des rôles disponibles qui peuvent être assignés aux nouveaux utilisateurs.Rails: Pouvez-vous passer des arguments à la méthode after_create?
Je souhaite utiliser la méthode de rappel after_create pour attribuer le rôle à l'utilisateur. Comment puis-je accéder à la valeur sélectionnée de la zone de sélection dans la méthode after_create?
def create
@user = User.new(params[:user])
respond_to do |format|
if @user.save
flash[:notice] = 'User creation successful.'
format.html { redirect_to @user }
else
format.html { render :action => 'new' }
end
end
end
Dans le modèle de l'utilisateur que j'ai:
after_create :assign_roles
def assign_roles
self.has_role! 'owner', self
# self.has_role! params[:role]
end
Je reçois une erreur parce que le modèle ne sait pas quel rôle.
Oui, vous voulez un "attribut virtuel" pour contenir la sélection de case à cocher. Il y a un super Railscast sur ça: http://railscasts.com/episodes/167-more-on-virtual-attributes –