我有两个表/模型(用户,人口统计),它们之间的关系松散并且共享一个公共列(电子邮件)。可能有多个用户记录使用相同的电子邮件,但只有一个人口统计记录。
是否可以定义has_one和has_many关系并强制它使用连接的电子邮件列而不是id?
谢谢, 斯科特
P.S。如果重要,我正在使用ActiveRecord 3.x
答案 0 :(得分:2)
您不能将非唯一数据用作密钥,因为没有任何内容可以强制执行资源所属的电子邮件地址实例。您可以将该电子邮件用作外键,但它将返回具有该电子邮件地址的所有用户的受众特征。
要覆盖外键,请执行以下操作:
belongs_to :user, :foreign_key => 'email'
参考:http://api.rubyonrails.org/classes/ActiveRecord/Associations/ClassMethods.html