2010-12-07 56 views
0

我正在使用Devise進行身份驗證。子用戶和設計

我正在使用它進行註冊和編輯其帳戶。我需要能夠爲每個帳戶添加「子」用戶。如果我從用戶模型中刪除:我可以使它工作,但通過這樣做,它會中斷edit_user_registration_path。

我需要的待辦事項是:

允許新用戶註冊。

允許現有客戶在其帳戶中添加「子用戶」。

我想我需要使用自引用關係來創建帳戶所有者。

繼承人的代碼,我目前所面對的

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 

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 

用戶/新(如果我刪除登記的我還可以使用用戶CRUD創建新用戶)

<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 %> 

回答

2

您可以在您的用戶內添加:has_many:屬於關係。像

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

並在您的控制器中添加對您的父級用戶的引用。

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

非常感謝您的幫助!這很有用。 – 2010-12-13 10:25:54