将has_one关联的父对象一次性保存到多态子项会产生错误

时间:2013-03-27 21:53:36

标签: ruby ruby-on-rails-3 activerecord nested-attributes polymorphic-associations

我正在尝试一次保存父对象(Report)和关联的多态子(Attachment) - 该关联是'has_one'。

我在报表上使用'.create'方法,其中包含一个包含子项嵌套内容的参数哈希,但是我收到错误'验证失败:附件可连接不能为空'。

我所拥有的(简称):

父模型:

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

查看(haml):

= 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自动填充),但我想避免这两步保存进程,以确保两者都被保存,或两者都没有。

有没有人有想法?

谢谢!

0 个答案:

没有答案