2010-02-05 5 views
3

Tout comme un avertissement, je suis nouveau sur les rails et la programmation en général alors s'excuser pour malentendu quelque chose d'évident.Authlogic Aide! Enregistrement d'un nouvel utilisateur lorsqu'il est actuellement connecté en tant qu'utilisateur ne fonctionne pas

J'ai Authlogic avec l'activation et l'exécution. Donc, pour mon site, je voudrais que mes utilisateurs connectés puissent enregistrer d'autres utilisateurs. Le nouvel utilisateur sélectionne son identifiant et son mot de passe via l'e-mail d'activation, mais l'utilisateur existant doit les indiquer par e-mail, par poste et par quelques autres attributs. Je veux que cela soit fait par l'utilisateur existant.

Le problème que je rencontre, si je suis connecté, puis essayez de créer un nouvel utilisateur, il essaie juste de mettre à jour l'utilisateur existant et ne crée pas un nouveau. Je ne suis pas sûr s'il y a un moyen de résoudre ce problème en commençant une autre session ??? Si cela est juste/possible, je ne saurais pas comment le mettre en œuvre.

Je réalise sans connaître complètement mon application, il peut être difficile d'y répondre, mais cela semble-t-il même être la bonne façon de faire? Est-ce que j'ai râté quelque chose?

utilisateurs Contrôleur:

class UsersController < ApplicationController 
before_filter :require_no_user, :only => [:new, :create] 
before_filter :require_user, :only => [:show, :edit, :update] 

def new 
    @user = User.new 
end 

def create 
    @user = User.new 

if @user.signup!(params) 
    @user.deliver_activation_instructions! 
    flash[:notice] = "Your account has been created. Please check your e-mail for your account activation instructions!" 
    redirect_to profile_url 
else 
    render :action => :new 
end 

end 


def show 
    @user = @current_user 
end 

def edit 
@user = @current_user 
end 

def update 
    @user = @current_user # makes our views "cleaner" and more consistent 
    if @user.update_attributes(params[:user]) 
    flash[:notice] = "Account updated!" 
    redirect_to profile_url 
    else 
    render :action => :edit 
    end 
end 
end 

Mon User_Session Controller:

class UserSessionsController < ApplicationController 
    before_filter :require_no_user, :only => [:new, :create] 
    before_filter :require_user, :only => :destroy 

def new 
    @user_session = UserSession.new 
end 

def create 
    @user_session = UserSession.new(params[:user_session]) 
    if @user_session.save 
    flash[:notice] = "Login successful!" 
     if @user_session.user.position == 'Battalion Commander' : redirect_to battalion_path(@user_session.user.battalion_id) 
     else 
     end 
    else 
    render :action => :new 
    end 
end 

def destroy 
    current_user_session.destroy 
    flash[:notice] = "Logout successful!" 
    redirect_back_or_default new_user_session_url 
end 
end 

Répondre

1

Pouvez-vous coller vos utilisateurs et le code du contrôleur users_session?

Je suggère d'utiliser la gemme nifty_authentication de Ryan Bates. Vous pouvez utiliser authologic à la place du défaut restful_authentication avec

script/generate nifty_authentication --authlogic 

Fonctionne comme un charme.

+0

Merci, j'ai modifié mon message avec le code. Le nify_authentication ressemble à un grand bijou que je voudrais utiliser à l'avenir, mais je pense qu'il fait juste ce que j'ai déjà en cours d'exécution. Je peux inscrire un utilisateur et le connecter très bien. Cependant, ce que j'essaie de faire, c'est d'enregistrer un AUTRE utilisateur quand un utilisateur est connecté. Cela ne crée pas ce deuxième utilisateur parce qu'il veut juste mettre à jour celui qui est actuellement connecté. – looloobs

+0

Je ne vois pas vraiment l'intérêt de laisser les utilisateurs en enregistrent d'autres. C'est trop compliqué pour très peu de gains. Une chose que je peux penser est de créer des invitations que les utilisateurs peuvent envoyer à d'autres utilisateurs. Cette méthode ne laisse pas l'utilisateur actuel choisir le nom d'utilisateur et le laisser passer, mais j'imagine que les gens n'aiment pas le nom d'utilisateur et passent déjà choisi pour eux. –

+0

Oui J'ai aussi pensé à la route des invitations, je n'ai pas l'intention de laisser quelqu'un d'autre choisir le nom d'utilisateur ou le mot de passe, ce qui est fait dans la partie activation. Je dois avoir la possibilité pour une personne qui est un utilisateur de mettre d'autres utilisateurs dans son groupe spécifié et par position, ces critères doivent être mis en place par cet utilisateur existant.Je me rends compte que j'ai probablement besoin de regarder dans les rôles aussi, mais cela ne semble pas résoudre mon problème d'ajouter un autre utilisateur pendant que l'on est connecté. Merci. – looloobs

0

Je l'ai fait sans problèmes, mais sachez à quel point il peut être difficile de vous porter vers une nouvelle langue et de nombreuses nouvelles bibliothèques! Accrochez-vous là! :)

Je pense que ce pourrait être le before_filter: require_no_user sur new et créer qui vous bloque.

Que voulez-vous dire par là? Rend-il la vue d'édition? Ou est-ce le résultat d'un post/put?

il essaie juste de mettre à jour l'utilisateur existant et n'en crée pas un nouveau.

Questions connexes