我有以下模特
用户
has_many :users_contacts
has_many :contacts, through: :users_contacts
accepts_nested_attributes_for :contacts, allow_destroy: true
Run Code Online (Sandbox Code Playgroud)
联系
has_many :users_contacts
has_many :users, through: :users_contacts
accepts_nested_attributes_for :users_contacts, allow_destroy: true
Run Code Online (Sandbox Code Playgroud)
UsersContact
belongs_to :users
belongs_to :contacts
Run Code Online (Sandbox Code Playgroud)
我正在使用以下强参数
params.require(:user).permit(:id, :email,
contacts_attributes: [:id, :first_name, :last_name,
users_contacts_attributes: [:id, :contact_id, :user_id, :order]])
Run Code Online (Sandbox Code Playgroud)
我现在面临的问题是每当我更新与用户users_contacts_attributes如{CONTACT_ID:5,顺序为:5}它会创建两个记录一个与order: nil及其他与order: 5我在PARAMS获得订单.
我想跟随
不希望创建重复记录.
使用额外列保存记录在连接表中,即 order
我的参数类似于以下内容
{"id"=>4,
"email"=>"abc@xyz.com",
"contacts_attributes"=>
[{"id"=>150,
"first_name"=>"Pqr",
"is_shareable"=>true,
"users_contacts_attributes"=>[{"id"=>87, "user_id"=>4, "contact_id"=>150, "order"=>100}]
},
{"first_name"=>"Def",
"is_shareable"=>true,
"users_contacts_attributes"=>[{"user_id"=>4, "order"=>101}]
}
]
}
Run Code Online (Sandbox Code Playgroud) ruby many-to-many ruby-on-rails ruby-on-rails-4 accepts-nested-attributes