更新嵌套属性附加而不是更新有很多关系
我正在尝试使用 Rails 4 Update_attributes
Class Person <ActiveRecord::Base
has_many :pets
accepts_nested_attributes_for :pets
end
Class Pet < ActiveRecord::Base
belongs_to :person
end
在我的控制器中,我收到的参数为
{id: 23, 房屋号码:'22A', 宠物: [{name:'jeffy', type:'dog'}, {name:'sharky', type:'fish'}]}
我的更新方法是
def update
@Person = Person.find(params[:id])
if @Person.update(person_params)
@Person.save
render 'persons/create', status 200
else
render 'persons/create', status 400
end
end
private
def person_params
person_params = params.permit(:house_no)
person_params.merge! ({pets_attributes: params[:pets]}) if params[:pets].present?
person_params
end
现在当我更新它时
如果这个人已经养了宠物
然后新宠物会被附加而不是更新
例如,如果 id 为 1 的人有 1 只名为“Tiger”的宠物
我用 2 个名为“Shasha”和“Monti”的宠物更新该人,然后该人记录有 3 个宠物(Tiger、Shasha 和 Monti),而不是将其更新为 2 个(Shasha 和 Monti)
你必须添加:id
归因于:pets_attributes
数组中person_params
.
您需要允许 id 属性来更新记录。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)