Validates_attachment_presence对嵌套对象不起作用,所以父得到保存,为什么?

时间:2010-11-04 18:26:37

标签: ruby-on-rails ruby-on-rails-3 nested paperclip

Rails 3.0 Paperclip 2.3.5

我有两个模型Order和Replay,Replay嵌套在Order中。重播的唯一目的是将带有回形针的文件保存到DB中的独立表。

我的问题是validates_attachment_presence没有做就是作业,如果我的上传文件是空的,它不会触发错误。因此,订单在订单表中保存,而重播不会保存在重播表中。

更奇怪的是,validates_attachment_size就像魅力一样。

为了把事情放到透视中我在使用paperclip之前遇到了同样的问题,validates_presence_of没有做到这一点。

class Order < ActiveRecord::Base

  has_one :replay
  accepts_nested_attributes_for :replay

end

class Replay < ActiveRecord::Base

belongs_to :order
  has_attached_file :replay

  validates_attachment_presence :replay                                               
  validates_attachment_size :replay, :greater_than => 1.megabyte

end

这是我的表单视图:

<%= form_for @order, :html => {:multipart => true} do |f| %>
  <%= f.error_messages %>
  <p>
    <%= f.label :name %><br />
    <%= f.text_field:name %>
  </p>
  <%= f.fields_for :replay do |builder| %>
  <p>
    <%= builder.label :replay, "Replay file:" %><br />
    <%= builder.file_field :replay %>
  </p>
  <% end %>
  <p><%= f.submit %></p>
<% end %>

1 个答案:

答案 0 :(得分:1)

尝试按顺序添加:

validates_associated :replay