来自Model的动态样式尺寸的回形针附件

时间:2010-10-27 02:07:55

标签: ruby-on-rails paperclip

使用Rails 2,我尝试通过Paperclip-Model中的另一个模型分离不同的动态图像大小。我目前的方法,使用Proc,看起来如下:

class File < ActiveRecord::Base
  has_many :sizes, :class_name => "FileSize"
  has_attached_file(
    :attachment,
    :styles => Proc.new { |instance| instance.attachment_sizes }
  )

  def attachment_sizes
    sizes = { :thumb => ["100x100"] }
    self.sizes.each do |size|
      sizes[:"#{size.id}"] = ["#{size.width}x#{size.height}"]
    end
    sizes
  end
end

class FileSize < ActiveRecord::Base
  belongs_to    :file

  after_create  :reprocess
  after_destroy :reprocess

  private

  def reprocess
    self.file.attachment.reprocess!
  end
end

一切似乎都很好,但显然没有处理任何样式,也没有创建图像。

有没有人管理过这样的事情?

- 更新 -

显然,实例上的attachment_sizes方法有时没有为#定义,但实际上不应该是实例#? 对我来说,这看起来像改变实例..

2 个答案:

答案 0 :(得分:2)

解决方案很简单。我的第一个示例中的instance Proc是Paperclip :: Attachment的一个实例。因为我想调用File方法,所以必须在Proc:

中获取调用实例
Proc.new { |clip| clip.instance.attachment_sizes }

instance代表File - 给定示例中的实例。

答案 1 :(得分:1)

我假设你已经掌握了回形针的所有内容,这样你就已经上传了一张图片,而现在proc已经无效了。

它应该工作。尽量不要将大小放在数组中。

你这样做

sizes = { :thumb => ["100x100"] }

但我有它,我没有把大小放在arry

sizes = { :thumb => "100x100" }

试一试:)