У нас есть обычная модель пользователя (user.rb):
Модель:
class User < ApplicationRecord
has_many :clientes, through: :clientes_users
end
И простая модель для клиентов (cliente.rb):
Модель:
class Cliente < ApplicationRecord
has_many :clientes_users
has_many :users, through: :clientes_users
end
Мы создали таблицу соединений (многие ко многим) (clientes_user.rb):
class ClientesUser < ApplicationRecord
belongs_to :cliente
belongs_to :user
end
Когда мы создаем пользователя, мы используем:
@user = User.new(
:email => params[:email],
:access_level => params[:access_level],
:password => params[:password_first],
:password_confirmation => params[:password_confirmation]
)
params[:cliente_id].each do |cliente|
@user.clientes_users.build(
:cliente => Cliente.find(cliente)
)
end
@user.save
Все отлично работает и наша таблица хранит данные:

Но когда мы обновляем отношения, записи дублируют записи.

Каков наилучший способ избежать такого поведения, если отношения не существуют, вставьте данные, но если они существуют, просто игнорируйте
С уважением.