2

我正在开发的应用程序(rails 4.2.7)同时使用carrierwavepaperclip上传同一数据模型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是一个载波上传器。

现在,对于cv_file字段的后台处理,我使用 carrierwave_backgrounder gem,对于avatar字段我使用delayed_pa​​perclip gem。

这两个 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?

任何帮助将不胜感激。谢谢!

4

1 回答 1

0

简单地 fork DelayedPaperclip 并更改名称可能是值得的。除此之外,您可能会尝试扩展 DelayedPaperclip 并为该方法设置别名:

module AliasDelayedPaperclip extend DelayedPaperclip alias_method :paperclip_process_in_background, :process_in_background end

我没有对此进行测试,它可能需要进行一些修改才能真正起作用,但这至少是您可以追求的路径的建议。

于 2017-09-06T00:03:03.143 回答