是否必须使用rails上的has_many关系或者belongs_to是否足够?

时间:2013-09-23 15:22:51

标签: ruby-on-rails

我有一个带有另一个var参考的模型。

User -> Profile

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

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

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

has_one :Profile

2 个答案:

答案 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。通常,这些方法除了使用相同的外键列之外没有任何共享。

值得一提的是,这通常被建议宣布反向关联 - 虽然不需要工作。