14

ユーザーとユーザープロファイルの2つのモデルがあります。ユーザーとユーザープロファイルの間には1対1の関係があります。

class Userprofile < ActiveRecord::Base
   attr_accessible :fname, :lname, :iswoman, :age, :urlphoto, :user_id

   belongs_to: user

end

class User < ActiveRecord::Base
   attr_accessible :name, :provider, :uid

   has_one: userprofile
end

接続を設定するために両方のクラスが必要か、 belongs_toまたはhas_oneのいずれかだけで十分かどうかを知りたいですか?has-manyなどの他の方法についても同じことが言えます。

4

2 に答える 2

34

必要な場所で関連付けを定義します。ある時点で言う必要がある場合は、user.userprofileに含めます。同様に、と言う必要がある場合は、に含めます。has_one :userprofileUseruserprofile.userbelongs_to userUserprofile

言い換えれば、関連付けは相対的です。has_one :bそのモデルBを指定せずにそのモデルAを指定できますbelongs_to :a。必要なものを定義するだけです。同じことが1対多および多対多の協会にも当てはまります。

user_id「userprofiles」テーブルに移行したことを確認してください。

于 2012-11-18T02:30:40.620 に答える
1

userprofilesとuserの間にbelongs_to関係があるだけで、デフォルトでhas_oneになります。ただし、両方のモデルで関連付けを指定することをお勧めします(Rails-proper)。

結局のところ、has_manyアソシエーション(など)が必要な場合は、それを指定する必要があります。

詳細については、http: //guides.rubyonrails.org/association_basics.htmlを確認してください。

于 2012-11-18T02:30:04.960 に答える