2010-12-07 6 views
0

J'utilise Devise pour l'authentification. Je l'utilise pour l'inscription et la modification de leur compte. J'ai besoin de la possibilité d'ajouter des utilisateurs "sub" à chaque compte. Je peux le faire fonctionner si je l'enlève: enregistrable à partir du modèle utilisateur, mais en faisant cela, il casse edit_user_registration_path.Sous-utilisateurs et devise

Ce que je dois todo est:

Autoriser les nouveaux utilisateurs pour vous inscrire.

Permet aux clients existants d'ajouter des "sous-utilisateurs" à leur compte.

Je pense que je dois utiliser une relation d'auto-référencement pour créer le propriétaire du compte.

Heres le code que j'ai au moment

class User < ActiveRecord::Base 
    devise :database_authenticatable, :registerable, 
     :recoverable, :rememberable, :trackable, :validatable 

    attr_accessible :email, :password, :password_confirmation, :remember_me, :name, :location, :country, :job_title, :company 
end 

(Si je retire: enregistrable Je peux créer de nouveaux utilisateurs en utilisant CRUD utilisateur)

class UsersController < ApplicationController 
    def new 
    @user = User.new 
    respond_to do |format| 
     format.html 
    end 
    end 

    def create 
    @user = User.new(params[:user]) 
    if @user.save 
     respond_to do |format| 
     format.html { redirect_to :action => :index } 
     end 
    else 
     respond_to do |format| 
     format.html { render :action => :new, :status => :unprocessable_entity } 
     end 
    end 
    end 
end 

Utilisateurs/new

<h2>Register User</h2> 

<%= form_for(@user) do |f| %> 
    <%= f.error_messages %> 
    <p><%= f.label :email %><br /> 
    <%= f.text_field :email %></p> 

    <p><%= f.label :password %></p> 
    <p><%= f.password_field :password %></p> 

    <p><%= f.label :password_confirmation %></p> 
    <p><%= f.password_field :password_confirmation %></p> 

    <p><%= f.submit "Register" %></p> 
<% end %> 

Répondre

2

Vous pouvez ajouter un: has_many: appartient à la relation au sein de votre utilisateur. quelque chose comme

class User 
    belongs_to :parent, :class_name => 'User' 
    has_many :children, :class_name => 'User' 
    ... 
end 

et dans votre contrôleur ajouter une référence à votre utilisateur parent.

class UsersController < ApplicationController 
    def new 
    @user = User.new 
    @user.parent_id = params[:parent_id] 
    respond_to do |format| 
    end 
end 
+0

merci pour votre aide! Cela a fonctionné un régal. –