Rails:在ActiveRecord中建模可选关系

时间:2012-10-03 15:30:51

标签: ruby-on-rails activerecord

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

我有两个模型:Profile,用于存储用户配置文件信息(名称,年龄,...)和User模型,用于存储用户对应用程序的访问权限(电子邮件,密码,...)

为了向您提供更多信息,User模型由Devise gem处理,用于注册/签名。

以下是我的应用的情景:

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

class User < ActiveRecord::Base
    belongs_to :profile
end

2 /用户可以在不注册的情况下创建它的配置文件(带有公共信息的公共配置文件类型),因此Profile中的一行不一定具有等效的User行(这里是可选的)关系,UML中的0..1关系。)

问题class Profile < AR::Base可选择使用User进行映射的相应脚本是什么?

提前致谢。

1 个答案:

答案 0 :(得分:4)

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

所有AR关系都是可选的(至少在默认情况下 - 我不确定你是否坚持它们存在)。如果您要求profile.user未设置关系,则只需返回nil