我正在使用Rails中的Paperclip保存图片上传,工作正常。
has_attached_file :image, :styles => {
:small => "80x90#"
}
在创建模型时,我想要的是将小图像的副本保存为模型中的base64编码字符串。
before_update :encode_image
private
def encode_image
self.base64 = ActiveSupport::Base64.encode64(open(self.image.path(:small)).to_a.join)
end
如果以前保存过图像,则上面的代码会对更新进行处理。我想将此逻辑应用于在模型保存之前触发的回调,但是在处理完图像之后。
我原以为after_post_process
会成为我的救世主,但路径并没有完全形成(缺少身份证)。
我错过了什么?
富
我的解决方法是执行以下操作,但每次更新模型时编码例程似乎都是一种耻辱:
after_save :encode_image
private
def encode_image
unless self.image.path(:small).blank?
b64 = ActiveSupport::Base64.encode64(open(self.image.path(:small)).to_a.join)
unless self.base64 == b64
self.update_attribute :base64, b64
end
end
end
答案 0 :(得分:0)
我的解决方法是执行以下操作,但每次更新模型时编码例程似乎都是一种耻辱:
after_save :encode_image
private
def encode_image
unless self.image.path(:small).blank?
b64 = ActiveSupport::Base64.encode64(open(self.image.path(:small)).to_a.join)
unless self.base64 == b64
self.update_attribute :base64, b64
end
end
end