Не распознается ошибкой команды «identifie» при использовании validates_each - PullRequest
1 голос
/ 12 августа 2011

Ниже приведены мои проверки для типа содержимого изображения, который отлично работает.

validates_attachment_size :icon, :less_than => MAX_SIZE.megabytes, :message => "Max size is 1 mb"
validates_attachment_content_type :icon, :content_type => ['image/jpg','image/jpeg', 'image/png', 'image/gif']

НО

Мне нужно проверить размеры также, и мой код

validates_each :icon do |record, attr, value|
    if record.icon_file_name
       dimensions = Paperclip::Geometry.from_file(value.queued_for_write[:original])
       if(dimensions.width > 600 || dimensions.height > 400)
         record.errors.add(:file, " #{record.icon_file_name} dimensions must be less than or equal to 600*400")
       end
     end
   end

И

выдает ошибку imagemagick Not recognized by the 'identify' command error

Можете ли вы пролить свет на это?

Спасибо.

Ответы [ 3 ]

1 голос
/ 12 августа 2011

Как насчет использования метода validate вместо validates_each? http://paulsturgess.co.uk/articles/33-how-to-write-custom-validation-in-ruby-on-rails

0 голосов
/ 29 августа 2011

Наконец-то сделал с помощью вашего ввода.

validate :icon_dimensions
def icon_dimensions
  unless icon.to_file.nil?
    dimensions = Paperclip::Geometry.from_file(icon.to_file(:original))
    if(dimensions.width > 72 || dimensions.height > 72)
      errors.add(:icon, " dimensions must be less than or equal to 72*72")
    end
  end
end

Я надеюсь, что validates_each выполняется до или отменяет другие проверки.Не уверен: (

0 голосов
/ 12 августа 2011

Похоже, у вас не установлен ImageMagick на вашем компьютере. Если вы это сделаете, введите

которые идентифицируют

и добавьте путь в качестве значения к следующей опции скрепки в environment.rb

Paperclip.options [: command_path] = "/ usr / local / bin /" # Использование этой папки

Дайте знать, как это происходит ..

...