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,socialaddress的另一个副本。它有什么问题?

您是否包含id需要更新的机型?在Rails API,它指出:“对于那些不具有ID键的新纪录将被实例化每个散” ......

那么试试这个:

model_attributes = { 
     talent_parameter_attributes: { 
     }, 
     contact_attributes: { 
      id: 7, 
      agency_link: base_url + href 
     }, 
     social_attributes: { 
     }, 
     address_attributes: { 
     } 
    }