自定义Paperclip处理器未被调用

时间:2012-02-01 07:36:44

标签: ruby-on-rails ruby paperclip

我有一个使用Devise生成的用户模型。我正在使用paperclip扩展此模型以启用文件上载以及使用自定义回形针处理器处理文件。

我的回形针字段在用户模型中声明如下。 PaperClipStorage是我用回形针变量创建的哈希。此外,存储在AWS S3上。

has_attached_file :rb_resume, PaperclipStorageHash.merge(:style => { :contents => 'resume_contents'}, :processors => [:resume_builder])
validates_attachment_content_type :rb_resume, :if => lambda { |x| x.rb_resume? }, :content_type => ['application/pdf', 'application/x-pdf', 'application/msword', 'application/x-doc']

正在进行validates_attachment_content_type检查,以确保它只处理pdf和MS word文件。

我的处理器如下所示

module Paperclip
  class ResumeBuilder < Processor
    def initialize(file,options = {}, attachment = nil)
      @file = file
      @attachment = attachment
      puts "Attachment is not null " if !attachment.nil?
    end

    def make
      rb = MyModule::MyClass.new(@file.path) ### Do something with the file
      section_layout  = rb.parse_html
      @attachment.instance_write(:whiny, section_layout)
      @file
    end
  end
end

在我的用户模型中,我还有一个after_save回调,它应该采用处理器make方法生成的section_layout。代码如下

after_save :save_sections
def save_sections
   section_layout = rb_resume.instance_read(:whiny)
   # Do something with section_layout...
end

现在我的问题是处理器代码永远不会被调用,我无法弄清楚原因。

因此,section_layout变量始终为nil。

需要注意的另一点是,同一模型还有两个has_attached_file属性。其他两个都没有使用自定义处理器。

过去3个小时我一直在努力。任何帮助都会非常感激。

由于

1 个答案:

答案 0 :(得分:2)

我的has_attached_file声明错误

has_attached_file :rb_resume, PaperclipStorageHash.merge(:style => { :contents => 'resume_contents'}, :processors => [:resume_builder])

实际应该是

has_attached_file :rb_resume, PaperclipStorageHash.merge(:styles => { :contents => 'resume_contents'}, :processors => [:resume_builder])

注意复数风格而​​不是单数风格