2016-08-10 6 views
0

私はdevise gem(email + password)を使ってユーザーがサインアップするアプリケーションを設計しています。複数のフィールドが登録されているレールを作成する

次に、私は他の個人情報を取得するためのフォームを持っています。私は社会的な出会い系アプリのようなものを作成しています。

私はdeviseでモデルを作成してから、サインアップした後にフォームからデータを保持するために別のデータベースを使用しているため、私の質問は設計上の問題です。

は、彼らは両方のユニークなので、あなたが考案し、新しいデータベース、多分IDまたはメールからのモデル間の相互の列を持つ勧めですか

OR

上書き工夫することによってのためにサインアップでこの情報を求めますカスタムコントローラを使用していますか?

ベストプラクティスとは何でしょうか?私は2つのタイプのユーザーを持っていることを覚えておいてください。それは男性/女性ではありません。それは別のものです。したがって、2つのデータベースは、合計3つのデータベースから作成することができます。

答えて

1

私は、ユーザーのDeviseモデルを維持し、別のモデル(「プロファイル」など)を作成して、各ユーザーのすべての「個人」データをすべて格納することができます。

次に、ユーザーが新しいフォームでそのデータを入力するか、ユーザーがすぐに情報を入力できるサインアップフォームでネストされたフィールドを作成することができます。

+0

フィールドとリレーションを組み合わせる方法に関するコードを例として挙げることはできますか?私は、ユーザーと呼ばれるモデルを使用しています。次に、ユーザーに関する個人情報を含む別のテーブルに固有のIDまたは電子メールをどのように関連付けることができますか。新しいユーザーやアクティブなユーザーなど、このテーブルに別の名前を付ける必要がありますか? –

+0

プロファイルと呼ばれる新しいモデルを作成したとしましょう。プロファイルの移行ファイルに、「user_id」という列を追加します。次にあなたのユーザモデルで 'has_one:profile'行を追加し、あなたのプロファイルモデルに' belongs_to:user'を追加します。これで、プロファイルを作成するときに、ユーザーIDをパラメータに渡し、保存した後に 'user.profile'を実行してそのユーザーのプロファイルを取得できます。あるいは 'profile.user'です。私はネストされたフォームのためにこのrailscastを見てみることをお勧めします:http://railscasts.com/episodes/196-nested-model-form-part-1 幸運を! :) – Tashows

関連する問題