У меня есть модель 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
?