2016-06-19 20 views
0

私はRoRを初めて使い始めています。コンテンツ管理システムの一種を実装しようとしています。他のユーザーを作成する管理ユーザーがいるとします。ユーザーの登録ページに動的にリストを追加する

私はDevise gemを試しました。私の最初の質問は、管理者ユーザーが他のユーザー(情報、名前、電子メール、パスワードを入力する)を作成するように、この宝石をどうやって使うことができるのですか?管理者ユーザーがサインアップページにアクセスして新しいユーザーを作成できるようにするのはプログラム的に正しいですか?

私の2番目の質問は、私のアプリケーションでは、管理者が実行時に組織名のリストを動的に追加できることです。したがって、新しいユーザーを作成するときは、そのユーザーの組織リストから組織を選択する必要があります。私は、組織名のための空のデータベースを作成することを考えていました、そして、adminユーザーはランタイムでそのデータベースに追加します。それは良い方法ですか?

は、私は、これは行くための最良の方法ですが、私はそれがフォローのように動作するように管理できるかどうかわからないんだけど アミール

+0

管理者はログに記録できます。レコードの特定のデータによっては、ビューの表示内容を区別できます。ユーザーが管理者であるかどうかに応じて、ネームスペースを作成し、アクセスをフィルタすることもできます。名前空間はコントローラのフォルダのようなものです。特定のコントローラをadmin、...などの専用機能に再編成することができます。これらのコントローラは、親/通常フォルダの他のコントローラと同じ名前を持つことができます。 – Maxence

+0

お返事ありがとうございます。実際、私はさまざまなユーザーに異なるビューを表示する方法を知っています。私が知らないのは、管理者ユーザーが他のユーザーを作成する方法です。管理者ユーザーがDeviseのサインアップボタンを見ることができたら、それは正しい方法ですか? – akargar

+0

私はdeviseを知らない。たぶん誰かがあなたに話すことができます。私のアプリでは、ユーザー・コントローラーとadminネーム・スペースの下に別のユーザー・コントローラーの両方があります。管理機能を持つログインユーザーだけがこの名前空間にアクセスできます。このコントローラでは、たとえば、インデックスビューを使用できます。 (これは通常のユーザコントローラにはない)、管理フィールドを修正することも可能である。これはデフォルトでは間違っていて、通常のユーザコントローラでは変更できません。できることを決めるのはあなた次第です。 – Maxence

答えて

0

、どうもありがとうございます。
ユーザーモデルでは、: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%確信していません。
私はこれについて他の人が何を言わなければならないのか聞いてうれしいです。

+0

ご回答いただきありがとうございます。私はあなたの方法を試し、あなたに知らせるでしょう。 – akargar

関連する問題