У меня есть модель NewsItem
, которая has_many :attachments
.В новой форме NewsItem пользователь может создавать вложения элемента, используя вложенную форму.
Attachment
состоит из title
и file
(который загружен).Модель выполняет проверку наличия обоих этих полей.
Однако, если я оставлю поля для нового вложения пустыми и нажму кнопку отправки, я получу правильные сообщения об ошибках («заголовок не долженбыть пустым "и т. д.), но вложение все же сохраняется с обоими (недопустимыми) значениями.
Единственный соответствующий код, который я могу придумать, это та часть, где я вызываю @news.save
в create
методе NewsItemController
:
respond_to do |format|
if @news.save
flash[:success] = t( 'news.flash.created' )
format.html { redirect_to news_index_path }
else
format.html { render :action => "new" }
end
end
Все остальное должно обрабатываться рельсами (Новости accepts_nested_attributes_for :attachments, :allow_destroy => true
).
Любые идеи о том, что я делаю неправильноздесь?
Обновление:
Похоже, :reject_if
-параметр accepts_nested_attributes_for
- это почти то, что мне нужно.К сожалению, вы можете только молча «игнорировать» недействительные записи.Я хочу, чтобы пользователь получил сообщение об ошибке, если одно из двух полей пустое.Есть идеи?