使用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方法有时没有为#定义,但实际上不应该是实例#? 对我来说,这看起来像改变实例..
答案 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" }
试一试:)