、どうもありがとうございます。
ユーザーモデルでは、:confirmable
がdeviseに追加されていることを確認してください。
devise :database_authenticatable, :registerable, :confirmable, ...,
また、次のフィールドを持つユーザーテーブルが必要です。
t.string "confirmation_token"
t.datetime "confirmed_at"
t.datetime "confirmation_sent_at"
次に、ユーザーコントローラに次のメソッドを追加します。
def create_new_account
@new_user = User.new(user_params)
if @new_user.valid?
@new_user.skip_confirmation!
@new_user.confirmed_at = nil
if @user.save
render action: "some_action"
else
render action: "some_other_action"
end
end
end
この方法でユーザーが新しいアカウントを作成すると、確認トークンを使用して新しいアカウントのメールアドレスにメールが送信されます。これにより、新しいユーザーはパスワードを要求するページに転送されます。 app/views/devise/mailer/confirmation_instructions.html.erb
でそして、あなたのルートに好きことができる送信され
電子メールテンプレートを使用すると、コントローラのアクションにPOSTリクエストを持っていることを確認してください。
post "create_new_account" => "users#create_new_account"
私はこの上の専門家ではないが、私はこのことを理解の方法は、あなたの新しいユーザーアカウントが自分のパスワードを入力できるようにする工夫で確認オプションを必要とするということです。しかし、現在の管理者ユーザーは既にログインしているので、確認手順をスキップする必要があります。
もう一度、これが正しい方法であることを100%確信していません。
私はこれについて他の人が何を言わなければならないのか聞いてうれしいです。
管理者はログに記録できます。レコードの特定のデータによっては、ビューの表示内容を区別できます。ユーザーが管理者であるかどうかに応じて、ネームスペースを作成し、アクセスをフィルタすることもできます。名前空間はコントローラのフォルダのようなものです。特定のコントローラをadmin、...などの専用機能に再編成することができます。これらのコントローラは、親/通常フォルダの他のコントローラと同じ名前を持つことができます。 – Maxence
お返事ありがとうございます。実際、私はさまざまなユーザーに異なるビューを表示する方法を知っています。私が知らないのは、管理者ユーザーが他のユーザーを作成する方法です。管理者ユーザーがDeviseのサインアップボタンを見ることができたら、それは正しい方法ですか? – akargar
私はdeviseを知らない。たぶん誰かがあなたに話すことができます。私のアプリでは、ユーザー・コントローラーとadminネーム・スペースの下に別のユーザー・コントローラーの両方があります。管理機能を持つログインユーザーだけがこの名前空間にアクセスできます。このコントローラでは、たとえば、インデックスビューを使用できます。 (これは通常のユーザコントローラにはない)、管理フィールドを修正することも可能である。これはデフォルトでは間違っていて、通常のユーザコントローラでは変更できません。できることを決めるのはあなた次第です。 – Maxence