我有一个User
模型和一个ContactForm
模型。一个用户可以有多个联系表,同样,一个联系表可以有多个用户。
class User < ApplicationRecord
has_many :contact_form_userships
has_many :contact_forms, through: :contact_form_userships
end
class ContactForm < ApplicationRecord
has_many :contact_form_userships
has_many :users, through: :contact_form_userships
end
class ContactFormUsership < ApplicationRecord
belongs_to :user
belongs_to :contact_form
end
我正在通过名为ContactFormUsership
的联接表来关联这两个模型。
我假设一个用户只能添加一次到属于联系表单的用户列表中。但是我发现事实并非如此。如果我多次将用户添加到联系表单,则会为该用户创建多行:
contact_form = ContactForm.create
user = users(:user_1)
10.times do
contact_form.users << user
end
> contact_form.users.count
=> 10
> contact_form.users.map(&:id).uniq.count
=> 1
无论我在contact_form.users
上按下多少行,如何确保只为用户创建一行?
答案 0 :(得分:0)
您应该向ContactFormUsership添加唯一性验证:
caseModelRepository.findNotUsedCasemodels();