如何在Ruby中混合使用Paperclip has_attached_file方法?

时间:2013-10-25 00:54:17

标签: ruby module paperclip mixins

Paperclip提供以下代码:

has_attached_file :image, 
...
...

在多个模型中重复。

提取到模块:

module AttachedImage
  include Paperclip::Glue

  has_attached_file :image, 
  ...
  ...

引发Exception encountered: #<NoMethodError: undefined method 'class_attribute' for AttachedImage:Module>例外。

这是什么意思?如何混合使用Paperclip has_attached_file代码?有没有更好的方法来消除重复?

1 个答案:

答案 0 :(得分:3)

我刚才正在寻找类似的解决方案,并提出以下建议:

module AttachedFileModule
  extend ActiveSupport::Concern
  included do
    attr_accessible :avatar

    extend Paperclip::Glue
    has_attached_file :avatar,
    :styles => { :medium => "300x300>", :thumb => "100x100>" },
      :default_url => "/images/:style/missing.png"
  end
end

正如您在上面的代码中看到的,我们必须扩展ActiveSupport::Concern,因此我们可以使用attr_accessible方法。我们还必须扩展Paperclip::Glue,以便我们可以使用has_attached_file方法。

然后在模型中,您要将图像附加到:

class User < ActiveRecord::Base
  include AttachedFileModule
end