我有一个 var 引用另一个模型的模型。
User -> Profile
当我生成 Profile 模型时,我使用了引用功能,因此它生成了相应的迁移
....
t.references :user
....
我的问题是我是否也必须在 User 模型上添加关系?
has_one :Profile
我有一个 var 引用另一个模型的模型。
User -> Profile
当我生成 Profile 模型时,我使用了引用功能,因此它生成了相应的迁移
....
t.references :user
....
我的问题是我是否也必须在 User 模型上添加关系?
has_one :Profile
是的,您需要两个模型中的代码和您提到的迁移。
class User < AR
has_one :profile
end
class Profile < AR
belongs_to :user
end
has_one 和 belongs_to 只是为模型添加更多方法的方法。这意味着,您可以在一个模型上定义belongs_to,而在另一个模型上不定义has_one。唯一的问题是您可以调用 profile.user,但不能调用 user.profile。
想要定义哪些方法和不需要哪些方法完全取决于您。如果您从不希望任何人调用 profile.user,但希望 user.profile 只需调用has_one :profile
. 一般来说,这些方法除了使用相同的外键列之外没有任何共享。
然而值得一提的是,通常建议声明反向关联——尽管事情不需要它来工作。