在更新记录轨道时添加关联记录

时间:2018-06-13 07:53:02

标签: ruby-on-rails paperclip nested-attributes

 def upload_new_incident_attachments
    @attachments.each do |attachment|
        if record.new_record?
          record.images.build(attachment: attachment)
        else
          record.images.create(attachment: attachment)
        end
    end
end

如果父模型被创建(保存时),构建相关记录将自动保存,如果存在验证错误(包括孩子和父母),子项属性将不会被保存,我不会'知道如何在更新父模型时处理这个问题,

def update
   if record.update_attributes(incident_params)
     upload_new_record_attachments if @attachments
   end
end

如果在创建子记录时存在验证错误,则父模型已经更新,是否有任何方法可以在单个提交中更新(创建子记录和更新父记录),或者任何其他方式

1 个答案:

答案 0 :(得分:1)

您可以在构建或创建子关联之前检查其父模型是否有效

def update
  # Assign attributes to the parent model
  record.assign_attributes(incident_params)

  if record.valid?
    # Builds or creates images only when there are no validation errors
    upload_new_record_attachments if @attachments

    # Now you can save it and make sure there won't be any validation errors
    record.save
  end
end