2010-02-06 4 views
1

rails plugin paperclip поддерживает валидации на модели, такие как:Rails Paperclip плагин - Validations

validates_attachment_size 

Единственная проблема заключается в том, что с помощью этой проверки, кажется, чтобы заставить проверку фактического присоединения, где иногда может быть не один ,

Если я проверяю следующее, какое условие: если я могу использовать, чтобы игнорировать проверку, если нет: документ присутствует? (это означает, что пользователь передал родительский объект без прикрепленного документа).

validates_attachment_size :document, :less_than => 5.megabytes, :if => ??? 

Родительский объект является: записка, поэтому в файле note.rb у меня есть:

has_attached_file :document 

RDocs: dev.thoughtbot.com/paperclip/

ответ

0

Вы можете добавить :allow_nil => true, который пропустит проверку, если вложение отсутствует.

+0

Это не работает. После добавления: validates_attachment_size: document,: less_than => 5.megabytes,: allow_nil => true Примечания не будут сохраняться в базе данных вообще. В моем контроллере заметок у меня есть оператор if, говорящий, что @ note.save, делайте хороший материал, иначе перенаправляйте обратно на страницу со вспышкой. Он перенаправляет каждый раз - @ note.save не будет срабатывать правильно. У меня нет других утверждений в заметках, которые могут привести к его не сохранять, поскольку комментирование проверки подлинности скрепки делает все нормальным. – Steve

+0

Журналы не детализируют что-либо конкретное для скрепки либо (что является dissapointing). Обновление: Обратите внимание на следующее: http://github.com/thoughtbot/paperclip/issues/issue/134 – Steve

2

Вы можете передать в :if => lambda { avatar.dirty? } после утверждения, считая, что ваше приложение имеет имя avatar. Например:

validates_attachment_size :avatar, :less_than => 500.kilobytes, :if => lambda { avatar.dirty? }

0

Проверьте имя файла.

validates_attachment_size :document, :less_than => 5.megabytes, :if => !self.document_file_name.nil?