Скрепка: стиль в зависимости от модели (has_many полиморфных изображений)

Я настроил свои модели для использования полиморфной модели изображения. Это работает нормально, однако мне интересно, можно ли изменить параметр: styles для каждой модели. примеры с использованием STI (Model

Art

has_many :images, :as => :imageable

Image

belongs_to :imageable, :polymorphic => true
has_attached_file :file, :styles => { :thumb => "150x150>", :normal => "492x600>"}
                         #Change this setting depending on model

UPDATE

Я попытался запустить отладчик внутри метода Proc . Заполняются только поля, относящиеся к прикрепленному файлу:

run'irb(Image):006:0> a.instance => #<Image id: nil, created_at: nil, updated_at: nil, imageable_id: nil, imageable_type: nil, file_file_name: "IMG_9834.JPG", file_content_type: "image/jpeg", file_file_size: 151326, file_updated_at: "2010-10-30 08:40:23">

Это объект из ImageController # create

ImageController#create
@image => #<Image id: nil, created_at: nil, updated_at: nil, imageable_id: 83, imageable_type: "Art", file_file_name: "IMG_9834.JPG", file_content_type: "image/jpeg", file_file_size: 151326, file_updated_at: "2010-10-30 08:32:49">

Я использую скрепку (2.3.5) и Rails 3.0.1. Независимо от того, что я делаю, объект a.instance - это изображение с заполненными только полями, связанными с вложением. Есть идеи?

UPDATE2

После того, как я много читал на форуме Paperclip, я не верю, что можно получить доступ к экземпляру до того, как он будет сохранен. Вы можете видеть только скрепки, и все.

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

  before_filter :presave_image, :only => :create

  ...

  private

  def presave_image
    if @image.id.nil? # Save if new record / Arts controller sets @image
      @image = Image.new(:imageable_type => params[:image][:imageable_type], :imageable_id => params[:image][:imageable_id])
      @image.save(:validate => false)
      @image.file = params[:file] # Set to params[:image][:file] if you edit an image.
    end
  end
10
задан atmorell 30 October 2010 в 14:11
поделиться