我的Contact
模型具有email
属性。 Contact
belongs_to :company
和Company
has_many :contacts
。我想在Contact
上添加唯一性验证,以确保email
地址在属于给定Contacts
的{{1}}子集中是唯一的。换句话说,Company
电子邮件ABC-Corp
不能包含多个Contact
,但foo.bar@example.com
和ABC-Corp
都可以与电子邮件{{1}建立联系}}
我认为我需要对Demo-Corp
方法使用foo.bar@example.com
参数,但是我不能100%确定这是否是我想要的,因为文档没有做到最好的解释它的用法。
答案 0 :(得分:1)
让我们用这个:
class Contact < ActiveRecord::Base
# Your code
validates_uniqueness_of :email, scope: [:company_id]
end
因此,上面的代码只是确保电子邮件对每家公司都是唯一的
答案 1 :(得分:0)
是。您必须使用scope
选项。在您的contact
模型中,添加以下代码
#contact.rb
validates_uniqueness_of :email, scope: :company_id
为了并发性和完整性,您还需要向unique index
表添加contacts
,如下所示。
add_index(:contacts, [:email, :company_id], unique: true)