我有两个表/模型(User,Population),它们之间的关系松散,共享一个公共列(电子邮件)。同一封电子邮件可能有多个用户记录,但只能有一个人口统计记录。
是否可以定义has_one和has_many关系,并强制其使用联接的电子邮件列而不是id?
谢谢,Scott
附言:如果重要的话,我使用的是ActiveRecord 3.x
您不能使用非唯一数据作为密钥,因为没有任何东西可以强制资源属于哪个电子邮件地址实例。不过,您可以将电子邮件用作外键,但它将返回具有该电子邮件地址的所有用户的人口统计信息。
要覆盖外键,请执行:
belongs_to :user, :foreign_key => 'email'
参考:http://api.rubyonrails.org/classes/ActiveRecord/Associations/ClassMethods.html