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 %>
答案 0 :(得分:1)
尝试按顺序添加:
validates_associated :replay