0

ペーパークリップでスタイル エイリアスを定義する方法はありますか (同じ変換、同じファイル パス)。

# in the model
has_attached_file :image, {
  :styles => {
    :thumb => "90x90>",
    :small => :thumb
  }
  [...]
}

# in the application
model.image.url(:thumb)
=> 'path/to/image/thumb.jpg'

model.image.url(:small)
=> 'path/to/image/thumb.jpg'

現在、多くの重複したスタイルがあるアプリケーションをリファクタリングしています。インターフェイスを壊さずに、一度定義したいと思います。

4

2 に答える 2

3

イニシャライザに追加するパッチは次のとおりです。

module Paperclip
  Options.class_eval do
    attr_accessor :aliases

    def initialize_with_alias(attachment, hash)
      @aliases = hash[:aliases] || {}
      initialize_without_alias(attachment, hash)
    end

    alias_method_chain :initialize, :alias
  end

  Attachment.class_eval do
    def url_with_patch(style_name = default_style, use_timestamp = @options.use_timestamp)
      style_name = @options.aliases[style_name.to_sym] if @options.aliases[style_name.to_sym]
      url_without_patch(style_name, use_timestamp)
    end

    alias_method_chain :url, :patch
  end
end

次のように使用します。

has_attached_file :image, {
  :styles => {
    :thumb => "90x90>"
  }
  :aliases => { :small => :thumb }
}
于 2012-08-31T19:14:31.280 に答える