3

我正在尝试一次性保存父对象(报告)和关联的多态子对象(附件) - 关联是“has_one”。

我在 Report 上使用“.create”方法,其中包含子项的嵌套内容的 params 哈希,但出现错误“验证失败:可附加的附件不能为空”。

我所拥有的是(简化):

父模型:

Class Report
  has_one :attachment, as: :attachable, :dependent => :destroy

  attr_accessible :refdate, :link_name, :type_name, :attachment_attributes

  accepts_nested_attributes_for :attachment

儿童型号:

Class Attachment
  belongs_to :attachable, polymorphic: true

  attr_accessible :file

  validates_presence_of :attachable
  validates_presence_of :file

控制器:

ReportsController
  def create
    @report = Report.create!(params[:report])
  end

查看(哈姆):

= form_for @report, html: { multipart: true } do |f|
  = f.select :type_name
  = f.text_field :link_name
  = f.text_field :refdate
  = f.fields_for :attachment_attributes, html: { multipart: true } do |p|
    = p.file_field :file
  = f.submit

调整控制器我可以实现首先将父级保存到数据库,然后保存附件(这里attachable由 Rails 自动填充),但我想避免这个两步保存过程,以确保两者得救了,或者两者都没有。

有人有想法吗?

谢谢!

4

0 回答 0