我正在尝试一次性保存父对象(报告)和关联的多态子对象(附件) - 关联是“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 自动填充),但我想避免这个两步保存过程,以确保两者得救了,或者两者都没有。
有人有想法吗?
谢谢!