我有一个带有关联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
上的破坏,以便现有的上传不会丢失?
如何确保表单填写现有上传内容?
答案 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