Rails破坏has_one关联上传

时间:2018-02-16 00:18:10

标签: ruby-on-rails shrine

我有一个带有关联has_one :uploads, as: :uploadable

的组织模型

的多态关系
class Upload < ApplicationRecord
  include Uploaders::StandardUploader::Attachment.new(:file)
  belongs_to :uploadable, polymorphic: true, touch: true, optional: true
end

在创建记录方面,一切正常,但在我编辑时:

  = form.fields_for :upload, organization.upload do |form_upload|
    = form_upload.label :file
    = form_upload.file_field :file
      span Choose file...

控制器在编辑方法中调用build_upload,该方法构建新关联并实际销毁现有关联。

如果我不打电话给build_upload,则表单上传邮件是空白的。

我不知道发生了什么......我该如何防止has_one上的破坏,以便现有的上传不会丢失?

如何确保表单填写现有上传内容?

2 个答案:

答案 0 :(得分:1)

您应该启用nested attributes以允许通过父记录更新相关记录:

class UploadableModel < ApplicationRecord
  # ...
  accept_nested_attributes_for :upload
end

fields_for应自动生成ActiveRecord期望的嵌套属性格式的表单字段。请参阅下面fields_for API文档中的示例。

答案 1 :(得分:0)

尝试设置

之类的关联
has_one :uploads, as: :uploadable, autosave: false