用一个具有对象的替换哈希参数

时间:2016-04-27 06:30:53

标签: ruby-on-rails ruby

我有很多模型需要包含has_attached_file相同的参数

如何将参数存储在一个哈希对象中?

当前用法

class Product < ActiveRecord::Base

  has_attached_file :cover,
    :storage => :s3,
    :s3_region => ENV['AWS_REGION'],
    :s3_host_name => ENV['S3_HOST'],
    :s3_credentials => "#{Rails.root}/config/s3.yml" ,
    :styles => IMAGE_STYLES,
    :default_url => "/images/missing.png"

end

预期用途

default_s3_arguments = {:storage => :s3,
        :s3_region => ENV['AWS_REGION'],
        :s3_host_name => ENV['S3_HOST'],
        :s3_credentials => "#{Rails.root}/config/s3.yml" ,
        :styles => IMAGE_STYLES,
        :default_url => "/images/missing.png"}


class Product < ActiveRecord::Base

  has_attached_file :cover, default_s3_arguments

end

2 个答案:

答案 0 :(得分:0)

如果它是我认为的常数,

您可以在此初始化程序中定义哈希

如果您需要在其他型号中使用此哈希,请执行此操作

S3_ARGUMENTS = {:storage => :s3,
                :s3_region => ENV['AWS_REGION'],
                :s3_host_name => ENV['S3_HOST'],
                :s3_credentials => "#{Rails.root}/config/s3.yml" ,
                :styles => IMAGE_STYLES,
                :default_url => "/images/missing.png"}

然后在您的模型中,您可以像这样使用它:

class Product < ActiveRecord::Base

  has_attached_file :cover, S3_ARGUMENTS

end

如果您不想在其他模型中使用它,请在类Model本身中定义常量。

答案 1 :(得分:0)

我建议您查看回形针S3文档(如果您使用的是

https://github.com/thoughtbot/paperclip/wiki/Paperclip-with-Amazon-S3