Ответ 1
Оп! Здесь пользовательская проверка, которую я написал для своего приложения, она должна работать дословно в вашем, просто установите пиксели в нужное вам положение.
def file_dimensions
dimensions = Paperclip::Geometry.from_file(file.queued_for_write[:original].path)
self.width = dimensions.width
self.height = dimensions.height
if dimensions.width < 50 && dimensions.height < 50
errors.add(:file,'Width or height must be at least 50px')
end
end
Одно замечание: я использовал self.width=
и self.height=
, чтобы сохранить размеры в базе данных, вы можете оставить их, если вы не хотите сохранять размеры изображения.
Проверка ширины и высоты означает, что только один должен быть больше 50 пикселей. Если вы хотите убедиться, что BOTH больше 50, вы, по иронии судьбы, должны проверить ширину или высоту. Мне кажется странным, что одно или другое означает проверку AND, и оба они означают OR, но в этом случае это правда.
Единственный другой вопрос: вам нужно запустить эту проверку LAST: если в модели уже есть другие ошибки, это вызовет исключение. Честно говоря, это было какое-то время, поэтому я не помню, что такое сообщения об ошибках, но в вашем макросе проверки используйте это:
validate :file_dimensions, :unless => "errors.any?"
Это должно позаботиться об этом!