如何在同一个轨道模型中使用来自两个不同宝石的相同“名称”的两种不同方法?

时间:2017-01-23 12:06:49

标签: ruby-on-rails paperclip carrierwave delayed-paperclip carrierwave-backgrounder

我正在使用的应用(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 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?

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

1 个答案:

答案 0 :(得分:0)

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

module AliasDelayedPaperclip extend DelayedPaperclip alias_method :paperclip_process_in_background, :process_in_background end

我没有对此进行测试,可能需要对实际工作进行一些修改,但这至少是对你可以追求的路径的建议。

相关问题