Validates_attachment_presence не работает на вложенном объекте, поэтому родительский элемент сохраняет, почему? - PullRequest
0 голосов
/ 04 ноября 2010

Rails 3.0 Paperclip 2.3.5

У меня есть две модели Order и Replay, Replay вложен в Order.Единственная цель воспроизведения - сохранить файл со скрепкой в ​​независимой таблице в БД.

Моя проблема в том, что validates_attachment_presence не выполняет свою работу, она не вызывает ошибку, если мой загружаемый файл пуст.Таким образом, заказ сохраняется в таблице заказов без повторов, сохраняемых в таблице повторов.

И что странно, что validates_attachment_size работает как шарм.

Чтобы представить вещи в перспективе, у меня была та же проблема, прежде чем использовать скрепку, 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 Ответ

1 голос
/ 04 ноября 2010

Попробуйте добавить в заказ:

validates_associated :replay
...