我有一个带有另一个var参考的模型。
User -> Profile
当我生成Profile模型时,我使用了引用 功能因此它已生成相应的迁移
....
t.references :user
....
我的问题是我是否必须在用户模型上添加关系?
has_one :Profile
答案 0 :(得分:1)
是的,您需要两个模型中的代码和您提到的迁移。
class User < AR
has_one :profile
end
class Profile < AR
belongs_to :user
end
答案 1 :(得分:1)
has_one和belongs_to只是为模型添加更多方法的方法。这意味着,您可以在一个模型上定义belongs_to,而在另一个模型上没有has_one。唯一的问题是你可以调用profile.user,但没有user.profile。
完全由您决定要定义哪些方法以及哪些方法不需要。如果您从未希望任何人调用profile.user,但希望user.profile只调用has_one :profile
。通常,这些方法除了使用相同的外键列之外没有任何共享。
值得一提的是,这通常被建议宣布反向关联 - 虽然不需要工作。