Рельсы - Скрепка, проверяющая размер приложения, когда это не должно быть? - PullRequest
11 голосов
/ 12 января 2010

У меня есть модель рельсов с использованием Paperclip, которая выглядит следующим образом:

  has_attached_file :image, :styles => { :normal => ['857x392#', :png] },
                    :url => '/assets/pages/:id/:basename.:extension',
                    :path => ':rails_root/public/assets/pages/:id/:basename.:extension'

  validates_attachment_size :image, :less_than => 2.megabytes

При попытке создать запись этой модели без вложений для загрузки возвращается ошибка проверки:

Были проблемы со следующими поля:

* Image file size file size must be between 0 and 2097152 bytes.

Я пытался передать оба параметра: allow_blank => true и: allow_nil => true после утверждения валидации в модели, но ни один из них не сработал.

Как разрешить пустое значение параметра: image?

Ответы [ 4 ]

10 голосов
/ 30 августа 2012

validates_attachment_size: image,: in => 0.megabytes..2.megabytes

работает сейчас

6 голосов
/ 22 июня 2010
validates_attachment_size :image, :less_than => 25.megabytes, 
                          :unless => Proc.new {|m| m[:image].nil?}

отлично работает для меня

1 голос
/ 12 января 2010

Проверка Paperclip только проверяет диапазон, и не заботится о :allow_nil => true

Что вы можете сделать, это попытаться установить :min => nil или :min => -1, возможно, это сработает.

Обновление: Это не будет работать в последней версии Paperclip, так как они изменили, как работают проверки. Вместо этого вы можете попробовать:

validates_attachment_size :image, :less_than => 2.megabytes, 
   :unless => Proc.new {|model| model.image }
0 голосов
/ 17 августа 2015

Попробуйте следующий код.

validate :image_present

def image_present
  if image.present? && image_file_size < 2.megabytes
    errors.add(:file_size, "file size must be between 0 and 2 megabytes.")
  end
end
...