我有一个相当标准的Paperclip设置,它几乎完全脱离了自述文件。我有一个通过回调触发的简单方法,从上传的图像中获取原色,并将它们保存到相应的实例中。
class Image < ActiveRecord::Base
has_attached_file :file, :styles => { large: "800x>", :medium => "300x300>", :thumb => "100x100>" }, :default_url => "/images/:style/missing.png"
validates_attachment_content_type :file, :content_type => /\Aimage\/.*\Z/
after_post_process :get_colors
def get_colors
colors = Miro::DominantColors.new(self.file.url)
colors = colors.to_hex.join(',')
self.colors = colors
self.save
end
end
正如您所看到的,我有一个after_post_process
回调,它确实被触发了。麻烦的是当我打电话给self.file.url
时,我得到一条看起来像这样的路径:
"/system/images/files//original/Peterson-Products-Wireframe-v01.jpg?1398443345"
。
缺少:id_partion
部分。它的真实路径看起来应该更像:
"/system/images/files/000/000/033/original/Peterson-Products-Wireframe-v01.jpg?1398443345"
我应该使用其他一些回调吗?我只希望每次上传时触发一次...如果图像更新,则不会再次触发。这是回形针中的一个错误,我应该在Github上提交?
非常感谢!
答案 0 :(得分:1)
尝试 queued_for_write
colors = Miro::DominantColors.new(file.queued_for_write[:original].path)