试图让Paperclip刷新或重新处理不起作用

时间:2010-06-08 17:32:06

标签: ruby-on-rails rake paperclip

我随着时间的推移,改变了笔类大小的尺寸。通过这些更改,用户上传到网站,因此很少有人拥有不同大小的拇指。我想重新压缩或刷新这些,所以我进入我的根并键入:

rake paperclip:refresh class=Deal

没有为拇指大小做任何事情..然后我在脚本/控制台:

  

Deal.find(987).reprocess!

退回此:

NoMethodError: undefined method `reprocess!' for #<Deal:0xb68a0988>
from /data/HQ_Channel/releases/20100607130346/vendor/rails/activerecord/lib/active_record/attribute_methods.rb:260:in `method_missing'
from (irb):7

我的交易类是:

=> Deal(id: integer, organization_id: integer, deal: string, value: string, what: string, description: string, image_file_name: string, image_content_type: string, image_file_size: integer, image_updated_at: datetime, created_at: datetime, updated_at: datetime, deal_image_file_name: string, deal_image_content_type: string, deal_image_file_size: integer, deal_image_uploaded_at: datetime)

如果要重新处理原件以使拇指在当前拇指大小参数中的大小正确,我该怎么办?

更新:我发现Paperclip附带了 attachment.rb 。有趣的是像.save.updated_at这样的方法有效。但是reprocess!和其他一些方法却没有。有什么味道明显不合适吗?

2 个答案:

答案 0 :(得分:66)

知道了!

这是因为paperclip与Model的对象无关,而是Model的对象图像。所以写得恰到好处,它会像这样工作:

Model.find(#).image.reprocess!

答案 1 :(得分:10)

您还可以使用附带的Rake任务:

$ rake paperclip:refresh CLASS=Deal

请参阅Paperclip Wiki