Сопоставление с помощью стилей изображений скрепок

У меня есть Album, который использует драгоценный камень Paperclip для хранения artwork загруженных изображений. Атрибут artwork содержит список стилей изображений разных размеров: большой, средний и большой.

class Album < ActiveRecord::Base
  has_attached_file :artwork, styles: { thumb: "50x50#", medium: "160x160#", large: "300x300#" }
  ...
end

В моем активном сериализаторе модели я хочу создать атрибут images на основе массива, который хранит URL-адреса каждого из этих размеров. По традиции я бы сделал что-то вроде этого:

class AlbumSerializer < ActiveModel::Serializer
  attributes :id, :name, :images

  def images
    [object.artwork.url(:thumb), object.artwork.url(:medium), object.artwork.url(:large)]
  end
end

Есть ли способ просто сопоставить каждый стиль вместо того, чтобы писать один и тот же вызов для URL-адреса художественного произведения? Я попытался получить хэш стилей, но ничего не вернул:

album.artwork.styles
=> {}

Есть идеи, как заставить это работать?


person Carl Edwards    schedule 13.01.2016    source источник


Ответы (1)


Не уверен насчет скрепки («массив стилей»), но вы могли бы:

def images
  [:thumb, :medium, :large].map { |style| object.artwork.url(style) }
end
person beauby    schedule 14.01.2016