Rails 4在更新嵌套属性时创建重复项
问题描述:
我已经尝试使用白名单标识,但它无济于事,无论如何都会创建重复项。Rails 4在更新嵌套属性时创建重复项
型号:
accepts_nested_attributes_for :address, :social, :contact, :talent_parameter
我传递的属性:
model_attributes = {
talent_parameter_attributes: {
},
contact_attributes: {
agency_link: base_url + href
},
social_attributes: {
},
address_attributes: {
}
}
update_model(model, model_attributes)
我设置的权限:
def self.update_model(model, attrs)
params = ActionController::Parameters.new(model: attrs)
model_params = params.require(:model)
model_params = model_params.permit(
:company,
:age,
:avatar,
:gender,
:contact_id,
talent_features: [],
talent_parameter_attributes: [:id, :weight_lbs, :dress, :shoe, :chest, :waist, :hips, :height_ft],
contact_attributes: [:id, :agency_link],
social_attributes: [:id]
)
model.update(model_params)
end
我不明白。每次创建talent_parameter
,contact
,social
和address
的另一个副本。它有什么问题?
答
您是否包含id需要更新的机型?在Rails API,它指出:“对于那些不具有ID键的新纪录将被实例化每个散” ......
那么试试这个:
model_attributes = {
talent_parameter_attributes: {
},
contact_attributes: {
id: 7,
agency_link: base_url + href
},
social_attributes: {
},
address_attributes: {
}
}