【问题标题】:Rails 4 creates duplicates when updating nested attributesRails 4 在更新嵌套属性时创建重复项
【发布时间】:2015-07-13 01:38:20
【问题描述】:

我已经尝试过将 id 列入白名单,但没有帮助,无论如何都会创建重复项。

型号:

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

【问题讨论】:

    标签: ruby-on-rails strong-parameters


    【解决方案1】:

    您是否为要更新的模型添加了 id ?在Rails API 中,它声明“对于每个没有 id 键的哈希,将实例化一条新记录”...

    所以试试这个:

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

    【讨论】:

      猜你喜欢
      • 2013-08-20
      • 2023-03-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-11-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多