2つのモデルを検討してください。
User
=>(id:整数、名前:文字列、created_at:日時、updated_at:日時、department_id:整数)Department
=>(id:整数、名前:文字列、created_at:日時、updated_at:日時)
現在、これら2つのテーブルの間には明らかな関係があります。それは
- それぞれ
User
に1つの部門があります - A
Department
は多くのユーザーに属しています。つまり、1つの部門に複数のユーザーがいます。
なので、次のようにepressを選びましたA belongs_to B
class User < ActiveRecord::Base
has_one :department
end
class Department < ActiveRecord::Base
belongs_to :user
end
しかし、ご存知かもしれませんが、機能せず、次のエラーがスローされます。
> @user = User.find(1)
> @user.department.name
Department Load (1.0ms) SELECT "departments".* FROM "departments" WHERE "departments"."user_id" = 1 LIMIT 1
ActiveRecord::StatementInvalid: PG::Error: ERROR: column departments.user_id does not exist
たくさんのヒットとトライアルの後。私はこれを定義する正しい方法に出くわしました。B belongs to A
class Department < ActiveRecord::Base
has_many :users
end
class User < ActiveRecord::Base
belongs_to :department
end
> @user = User.find(1)
> @user.department.name
Department Load (1.0ms) SELECT "departments".* FROM "departments" WHERE "departments"."id" = 1 LIMIT 1
=> "HR"
さて、これは私の脳がこれらの関連について考える方法とは正反対です。だから、私は少し混乱しているので、誰かが何が起こっているのか説明できたら?
なぜB belongs to A
&しないのA belongs to B
ですか?