1

さまざまな種類のユーザーがいるアプリケーションを構築しようとしています。ユーザー認証にauthlogicを使用しています。

したがって、authlogicがその魔法を実行するために必要なフィールドを持つ1つのユーザーモデルがあります。ここで、さまざまな種類のユーザーの追加フィールドを記述するいくつかの異なるモデルを追加したいと思います。

ユーザーが登録すると、ユーザータイプを選択し、登録が完了すると、ユーザーモデルに固有の情報を追加できるようになります。

これを行うための最良の方法は何でしょうか?現在、ポリモーフィックモデルを検討していますが、それが最善の方法かどうかはわかりません。どんな助けでも大歓迎です、ありがとう。

4

2 に答える 2

6

さまざまなprofileテーブルを作成して、プロファイルをユーザーに関連付けるだけです。したがって、ユーザーの種類ごとにテーブルを作成し、そこに特定の情報を保存して、参照するuser_id列を作成できますusers

class User < ActiveRecord::Base
  has_one :type_1
  has_one :type_2
end

class Type1 < ActiveRecord::Base
  belongs_to :user
end

class Type2 < ActiveRecord::Base
  belongs_to :user
end

現在、これはあまり DRY ではなく、常にユーザー タイプを追加している場合に問題が発生する可能性があります。したがって、ポリモーフィズムを調べることができます。

ポリモーフィズムの場合、usersテーブルはユーザーのタイプ (profileable_idおよびprofileable_type) を定義します。だから、このようなもの:

class User < ActiveRecord::Base
  belongs_to :profileable, :polymorphic => true
end

class Type1 < ActiveRecord::Base
  has_one :user, :as => :profileable
end

class Type2 < ActiveRecord::Base
  has_one :user, :as => :profileable
end

次に、ユーザー タイプの STI (単一テーブル継承) の 3 番目のオプションがあります。しかし、ユーザー タイプ フィールドが大幅に異なる場合、それは適切に拡張できません。

于 2010-04-06T18:11:37.280 に答える
1

ここで見た最良のアプローチ http://astockwell.com/blog/2014/03/polymorphic-associations-in-rails-4-devise/

于 2014-11-26T09:17:39.460 に答える