1

我有一个 var 引用另一个模型的模型。

User -> Profile

当我生成 Profile 模型时,我使用了引用功能,因此它生成了相应的迁移

....
t.references :user
....

我的问题是我是否也必须在 User 模型上添加关系?

has_one :Profile
4

2 回答 2

1

是的,您需要两个模型中的代码和您提到的迁移。

class User < AR
  has_one :profile
end

class Profile < AR
  belongs_to :user
end
于 2013-09-23T15:36:12.513 回答
1

has_one 和 belongs_to 只是为模型添加更多方法的方法。这意味着,您可以在一个模型上定义belongs_to,而在另一个模型上不定义has_one。唯一的问题是您可以调用 profile.user,但不能调用 user.profile。

想要定义哪些方法和不需要哪些方法完全取决于您。如果您从不希望任何人调用 profile.user,但希望 user.profile 只需调用has_one :profile. 一般来说,这些方法除了使用相同的外键列之外没有任何共享。

然而值得一提的是,通常建议声明反向关联——尽管事情不需要它来工作。

于 2013-09-23T16:59:41.427 回答