私は私の友人のために情報システムを作成しています。そこでは(すでに)登録されたユーザーがシステム内で使用するために他のユーザーを登録することができます。すでに登録されているユーザーは、新しく登録されたユーザー(子)の「親」としても機能する必要があります。インデックスページでは、登録ユーザーは自分が登録したユーザーの情報を見ることができます。私はすでにいくつかのコードを書いています。ただし、登録済みのユーザーが別のユーザーを登録したい場合、Deviseから次のメッセージが表示されます。「既にサインインしています。」また、parent_idは現在、新しく登録されたユーザーに保存されていません。
私の質問は次のとおりです。
- 新しく作成されたユーザーにparent_idが格納されるように、RegistrationController#createメソッドを変更するにはどうすればよいですか?
- ユーザーにログインして新しいユーザーを登録できるように、Deviseを変更するにはどうすればよいですか?
登録/確認などにDeviseを使用しています。親子関係に使用している祖先の宝石です。
私はすでに自分のRegistrationsControllerを作成しました:class Devise :: Registrations :: RegistrationsController <Devise :: RegistrationsController
def new
super
end
def create
super
end
def update
super
end
def index
@user = current_user
end
end
Registrations#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" %>
Registrations#index.html.erbファイル:
<% title "Geregistreerde owners" %>
<% if @user.blank? || !@user.has_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>