0

我有一个带有关联的组织模型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_uploadedit 方法,该方法建立一个新的关联并实际上破坏了现有的关联。

如果我不打电话build_upload,表格上传字段是空白的。

我不知道发生了什么......我能做些什么来防止破坏,has_one这样现有的上传就不会丢失?

我应该怎么做才能确保表格填写现有的上传?

4

2 回答 2

1

您应该启用嵌套属性以允许通过父项更新关联记录:

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

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

于 2018-02-16T09:37:06.363 回答
0

尝试设置关联,例如

has_one :uploads, as: :uploadable, autosave: false
于 2018-02-16T02:59:21.627 回答