Rails 4 - Paperclip重构出has_attached_file

时间:2017-11-07 13:27:23

标签: ruby-on-rails paperclip

我在下面的3种不同型号中进行了验证。我怎样才能重构它。

has_attached_file :image,
                    styles: {
                      large: '700x400>',
                      medium: '400x400#',
                      thumb: '100x100#'
                    },
                    default_url: '/images/missing.png'

validates_attachment_content_type :image,
                                    content_type: /\Aimage\/.*\z/

1 个答案:

答案 0 :(得分:1)

您可以将其移至concern。关于创建问题最困难的部分是命名它。随意更改名称,但我将称之为 ImageAttachable 。也许这是一个愚蠢的名字,但它是我能在短时间内做到的最好的。要对此进行编码,请添加以下文件:

应用/模型/关切/ image_attachable.rb

module ImageAttachable
  extend ActiveSupport::Concern

  included do
    has_attached_file :image,
                  styles: {
                    large: '700x400>',
                    medium: '400x400#',
                    thumb: '100x100#'
                  },
                  default_url: '/images/missing.png'

    validates_attachment_content_type :image,
                                  content_type: /\Aimage\/.*\z/
  end

end

然后,您将从模型中删除所有上述代码,并将其替换为:

include ImageAttachable

DHH已就此问题撰写an excellent article