我正在尝试一次保存父对象(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自动填充),但我想避免这两步保存进程,以确保两者都被保存,或两者都没有。
有没有人有想法?
谢谢!