Ruby on rails Rails避免连接表has\u many到has\u many上的重复记录
我们有一个用户的常规模型(user.rb): 型号:Ruby on rails Rails避免连接表has\u many到has\u many上的重复记录,ruby-on-rails,activerecord,orm,Ruby On Rails,Activerecord,Orm,我们有一个用户的常规模型(user.rb): 型号: class User < ApplicationRecord has_many :clientes, through: :clientes_users end class Cliente < ApplicationRecord has_many :clientes_users has_many :users, through: :clientes_users end 所
class User < ApplicationRecord
has_many :clientes, through: :clientes_users
end
class Cliente < ApplicationRecord
has_many :clientes_users
has_many :users, through: :clientes_users
end
所有工作正常,我们的表存储数据:
但当我们更新关系时,记录会复制条目
如果关系不存在,请插入数据,如果存在,请忽略,避免这种行为的最佳方法是什么
提前问候。定义一个
有许多关联也会给你带来设置者和获取者@user
应具有可用于分配的方法客户ID
和客户ID=
。您可以执行以下操作:
@user = User.create!(
email: params[:email],
access_level: params[:access_level],
password: params[:password_first],
password_confirmation: params[:password_confirmation],
cliente_ids: params[:cliente_id]
)
还要注意的是,password
和password\u first
之间的不匹配,以及cliente\u id
和cliente\u id
之间的不匹配是误导性的,在这两种情况下使用相同的名称会更好
如果参数名称与模型属性相同,则可以进一步执行以下操作:
@user = User.create!(user_params)
def user_params
params.require(:user).permit(:email, :access_level, :password, :password_confirmation, :cliente_ids)
end
如果控制器参数未在键user
下限定范围,则删除require(:user)
,即使它们可能应该这样做
希望这有所帮助。您能向我们展示您的更新操作吗?您只粘贴了创建操作,如果我没有弄错的话,创建不是您要问的问题。您好,很抱歉您是对的@user=user.find(8)@user.clientes\u users.build(:cliente=>cliente.find(6))@user.save
问题不在于如何调用,而在于如何在插入数据时避免重复。
@user = User.create!(
email: params[:email],
access_level: params[:access_level],
password: params[:password_first],
password_confirmation: params[:password_confirmation],
cliente_ids: params[:cliente_id]
)
@user = User.create!(user_params)
def user_params
params.require(:user).permit(:email, :access_level, :password, :password_confirmation, :cliente_ids)
end