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