我正在使用的应用(rails 4.2.7)同时使用carrierwave
和paperclip
上传同一数据模型User
上的两个不同字段的图片(下方图示)
create_table "users", force: :cascade do |t|
t.string "email"
t.string "first_name", limit: 255
t.string "last_name", limit: 255
t.string "avatar_file_name", limit: 255
t.string "avatar_content_type", limit: 255
t.integer "avatar_file_size"
t.datetime "avatar_updated_at"
t.string "cv_file"
end
avatar
字段是回形针对象,cv_file
是 carrierwave 上传器。
现在,对于cv_file
字段的后台处理,我正在使用carrierwave_backgrounder gem,而对于avatar
字段,我正在使用delayed_paperclip gem。
这两个宝石都会公开process_in_background
来处理图片上传到后台。所以我的用户模型看起来像:
class User < ActiveRecord::Base
# carrierwave
mount_uploader :cv_file, CvFileUploader
process_in_background :cv_file
# paperclip
has_attached_file :avatar,
:default_url => "default-avatar.png",
:styles => {
:thumb => ['100x100#', :jpg, :quality => 80]
}
process_in_background :avatar, processing_image_url: "default-avatar.png"
# ...
end
我在尝试访问应用中的任何页面时遇到此错误。
未定义的方法`remove_avatar?'对
你的意思是? remove_cv_file?
任何帮助将不胜感激。谢谢!
答案 0 :(得分:0)
简单地分叉DelayedPaperclip并更改名称可能是值得的。除此之外,您可能会尝试扩展DelayedPaperclip并为方法添加别名:
module AliasDelayedPaperclip
extend DelayedPaperclip
alias_method :paperclip_process_in_background, :process_in_background
end
我没有对此进行测试,可能需要对实际工作进行一些修改,但这至少是对你可以追求的路径的建议。