1

我想映射两个 Rails 模型之间的关系,其中一侧可以是可选的。让我更准确一点...

我有两个模型:Profile存储用户个人资料信息(姓名、年龄……)和User存储用户对应用程序的访问权限(电子邮件、密码……)的模型。

为了向您提供更多信息,User模型由 Devise gem 处理以进行注册/登录。

这是我的应用程序的场景:

1/ 当用户注册时,在表中创建了一个新行,并且在User表中存在一个等价的行Profile。这导致以下脚本:

class User < ActiveRecord::Base
    belongs_to :profile
end

2/ 用户无需注册即可创建其个人资料(具有公共信息的公共个人资料),因此行中的行Profile不一定具有User等效行(这里是可选关系,0..1UML 中的关系)。

问题:class Profile < AR::Base可选的映射到的相应脚本是什么User

提前致谢。

4

1 回答 1

4
class Profile << ActiveRecord::Base
  has_one :user
end

所有 AR 关系都是可选的(至少默认情况下 - 我不确定你是否可以坚持它们存在)。如果您询问profile.user未设置关系的位置,您就会nil回来。

于 2012-10-03T15:35:28.493 回答