Я использую скрепку для обработки моих загрузок файла, и в одной ситуации я не хочу, чтобы файл был обязателен. Я действительно однако хочу удостовериться, что это - определенный тип файла, когда это присутствует.
У меня есть это:
class TestModel < ActiveRecord::Base
#stuff
has_attached_file :sound #etc...
validates_attachment_content_type :sound, :content_type => ['audio/mp3', 'application/x-mp3']
end
И когда у меня нет существующего звукового файла, это говорит мне, что это не один из допустимых типов контента. Я попытался добавить ''
к :content_type
массив, который также не работает!
Я также делал попытку создания процедуры лямбды :if
свойство, но я не могу заставить это работать без некоторой ошибки.
Что-нибудь отсутствующее здесь?
фрагмент моей модели:
has_attached_file :logo, :styles => { :medium => ["300x300>", :png], :thumb => ["100x100>", :png] }
validates_attachment_size :logo, :less_than => 2.megabytes
validates_attachment_content_type :logo, :content_type => ['image/jpeg', 'image/png', 'image/gif']
и если я не предоставлю файл изображения, @ obj.update_attributes (..) не вызывает ошибки, но проверяет, если я предоставить файл. Может быть, вы используете старую версию скрепки?
gem list | ack paperclip
paperclip (2.3.1.1)
Думаю, вы могли бы попробовать «условную проверку», где условие - наличие файла?
class TestModel < ActiveRecord::Base
#stuff
has_attached_file :sound #etc...
validates_attachment_content_type :sound, :content_type => ['audio/mp3', 'application/x-mp3'], :if => :sound_attached?
def sound_attached?
self.sound.file?
end
end