Не нашел такой простой синтаксис, как псевдокод, включенный в мой первоначальный вопрос, но я нашел довольно простой способ сделать это.Вот код в моем файле model.rb:
has_attached_file :cover_image,
:path => "events/:created_at/event_:model_id/uploads/:basename_:style.:extension",
:default_url => "placeholders/default_cover_image_:style.png",
:styles => {
:original => Proc.new { |instance| instance.resize_cover_image('original') },
:iphone => Proc.new { |instance| instance.resize_cover_image('iphone') },
:thumb => "150x150#"
}
, а затем этот метод "resize_cover_image" следующим образом:
# will resize each paperclip style and set orientation attribute when working on the :original style
def resize_cover_image(style)
geo = Paperclip::Geometry.from_file(cover_image.to_file(:original))
case style
when 'original'
if geo.horizontal?
self.cover_image_orientation = 'landscape'
"1360x910>"
else
self.cover_image_orientation = 'portrait'
"910x1360>"
end
when 'iphone'
geo.horizontal? ? "480x318>" : "318x480>"
end
end
Если у кого-то есть что-то лучше или есть полезные комментарии о том, каксделать это лучше ... У меня все уши.
Спасибо -wg