class Photo < ActiveRecord::Base
cattr_accessor :current_account
attr_accessible :post_id
attr_accessible :image
belongs_to :post
has_attached_file :image,
:styles => { :medium => ["500x375>", :jpg], :thumb => ["70x70#", :jpg] },
:processors => [:thumbnail, :compression],
:url => "/system/#{Photo.current_account}/:class/:attachment/:id_partition/:style/:filename",
:path => ':rails_root/public:url'
validates_attachment_content_type :image, :content_type => /\Aimage\/.*\Z/
validates_attachment_file_name :image, :matches => [/png\Z/, /jpe?g\Z/]
validates_attachment_size :image, :less_than => 7.megabytes
before_post_process :rename_image
def rename_image
puts "== Photo.current_account: #{Photo.current_account} == "
extension = File.extname(image_file_name).downcase
self.image.instance_write :file_name, "#{Time.zone.now.to_i.to_s}#{extension}"
end
end
我在多租户应用上使用rails 3和paperclip。我试图根据Photo.current_account的值设置图像的路径,但它似乎不起作用。但是,当我把它放在rename_image中时,它可以工作。可能有什么不对?我对此进行了设置,以便在用户上传时,目标将基于用户在该请求期间的子域。 Photo.current_account已经保存了控制器的子域信息。
http://subdomain1.lvh.me:3000/system//photos/images/000/000/708/original/1417662848.jpg?1417662848
目前,输出类似于上面的行,您可以在系统/它后面看到一个空白字符串。
答案 0 :(得分:0)
我通过在当前模型中添加以下代码使用回形针插值来实现它。
Paperclip.interpolates :current_acct do |attachment, style|
Photo.current_account
end
然后使用
:url => "/system/:current_acct/:class/:attachment/:id_partition/:style/:filename"