ActiveRecord无密钥关联

时间:2011-05-27 13:27:05

标签: ruby-on-rails ruby-on-rails-3 activerecord

我有两个表/模型(用户,人口统计),它们之间的关系松散并且共享一个公共列(电子邮件)。可能有多个用户记录使用相同的电子邮件,但只有一个人口统计记录。

是否可以定义has_one和has_many关系并强制它使用连接的电子邮件列而不是id?

谢谢, 斯科特

P.S。如果重要,我正在使用ActiveRecord 3.x

1 个答案:

答案 0 :(得分:2)

您不能将非唯一数据用作密钥,因为没有任何内容可以强制执行资源所属的电子邮件地址实例。您可以将该电子邮件用作外键,但它将返回具有该电子邮件地址的所有用户的受众特征。

要覆盖外键,请执行以下操作:

  belongs_to :user, :foreign_key => 'email'

参考:http://api.rubyonrails.org/classes/ActiveRecord/Associations/ClassMethods.html