4

Railsアプリケーションにユーザーモデルがあります。Devise経由でログインするために追加された電子メールとパスワードとともに名前属性のみがあります。ユーザー向けのモデルプロファイルを作成したい。どうやって作成しますか。プロファイル属性を既存のユーザーモデルに追加するか、モデルプロファイルを作成してbelongs_toアソシエーションを追加します。

4

2 に答える 2

6

ユーザーモデルに属性を追加すると、ユーザーオブジェクトが少し重くなり、そのオブジェクトを頻繁に呼び出すことを考えると、最善のアイデアではありません。たとえば、ユーザーを確認するために、current_userヘルパーが行う場所や生年月日などのプロファイル属性をロードする必要はありません。したがって、別のモデルでプロファイル属性を抽出し、gabreilhilalのアプローチのいずれかを採用することをお勧めします。

于 2012-07-22T19:00:58.573 に答える
5

まあ、それはあなたが持っている要件に依存します。

ユーザーが持つことができるのは1つだけprofileで、に関連するいくつかの属性を追加するだけの場合、それにuser新しいクラスを作成する理由はありません。

ただし、ユーザーがプロファイルを1つしか持てない場合でも、いくつかの正規化を行うことをお勧めします。その場合、テーブルからいくつかの属性を削除してusersテーブルを作成するprofilesと、1対1の関係になります。

class User < ActiveRecord::Base
  has_one :profile
end 

class Profile < ActiveRecord::Base
  belongs_to :user
end 

ええと...要件によっては、ユーザーが複数のプロファイルを持っている場合があります。もしそうなら:

class User < ActiveRecord::Base
  has_many :profiles
end 

class Profile < ActiveRecord::Base
  belongs_to :user
end 

要約すると、正しいことも悪いこともありません...それはあなたが持っている要件とあなたが決定を設計することに依存します。

于 2012-07-22T18:48:19.410 に答える