2012-05-27 1 views
0

Я создаю информационную систему для моего друга, где (уже) зарегистрированные пользователи могут регистрировать других пользователей для использования в системе. Уже зарегистрированный пользователь должен также действовать как «родитель» вновь зарегистрированного пользователя (который является дочерним). На индексной странице зарегистрированный пользователь может видеть информацию о зарегистрированных пользователях. Я уже написал код. Однако, когда зарегистрированный пользователь хочет зарегистрировать другого пользователя, я получаю следующее сообщение от Devise: «Вы уже вошли в систему». Кроме того, parent_id в настоящее время не сохраняется у зарегистрированного пользователя.Как разрешить зарегистрированным пользователям регистрировать других пользователей с помощью Devise?

Мои вопросы:

  • Как я могу изменить мои RegistrationController # метод создания так что parent_id хранится во вновь созданном пользователем?
  • Как я могу изменить Devise так, чтобы loggin в пользователях мог регистрировать новых пользователей?

Я использую Devise для регистрации/подтверждения и т. Д. Драгоценный камень Ancestry Я использую для отношений родитель-ребенок.

Я уже создал свой собственный RegistrationsController: класс Завещание :: :: RegistrationsController регистраций < Разрабатывают :: RegistrationsController

def new 
    super 
    end 

    def create 
    super 
    end 

    def update 
    super 
    end 

    def index 
    @user = current_user 
    end 
end 

# new.html.erb зарегистрирования файл:

<% title "Owner registreren" %> 

<%= form_for(resource, :as => resource_name, :url => registration_path(resource_name)) do |f| %> 
    <%= devise_error_messages! %> 

    <%= f.hidden_field :parent_id %> 

    <div><%= f.label :email, "Email adres" %><br /> 
    <%= f.email_field :email %></div> 

    <div><%= f.label :password, "Wachtwoord" %><br /> 
    <%= f.password_field :password %></div> 

    <div><%= f.label :password_confirmation, "Wachtwoord (bevestiging)" %><br /> 
    <%= f.password_field :password_confirmation %></div> 

    <div><%= f.submit "Registreer" %></div> 
<% end %> 

<%= render :partial => "devise/shared/links" %> 

# зарегистрирования index.html.erb file:

<% title "Geregistreerde owners" %> 

<% if @user.blank? || [email protected]_children? %> 
    <p>U heeft geen owners geregistreerd</p> 
<% else %> 
    <table> 
     <tr> 
      <th>Email adres</th> 
     </tr> 
     <% for user in @user.children %> 
      <tr> 
       <td><%= child.email %></td> 
       <td><%= link_to "Weergeven", child %></td> 
       <td><%= link_to "Bewerken", edit_user_registration_path(user) %></td> 
       <td><%= link_to "Verwijderen", product, :confirm => 'Weet u het zeker?', :method => :delete %></td> 
      </tr> 
     <% end %> 
    </table> 
<% end %> 

<p><%= link_to "Nieuwe owner registreren", new_user_registration_path %></p> 

ответ

0

Вы не хотите передавать значение parent_id из своей формы в контроллер, потому что это не очень безопасно (его можно изменить, просто отредактировав html).

В создании действия пользовательского контроллера, прежде чем ваш призыв к супер, добавьте это:

params[:user][:parent_id] = current_user.id if current_user

И, если у вас есть свои ассоциации правильно установить, он должен работать.

+0

@rolfmao, спасибо! Вы также знаете, как позволить Devise разрешить зарегистрированным пользователям регистрировать новых пользователей? – Nazeem

+0

Я бы создал полностью отдельный контроллер, чтобы сделать это. – roflmao

 Смежные вопросы

  • Нет связанных вопросов^_^