如何获取当前的Mongoid会话或数据库

时间:2015-06-27 15:47:00

标签: mongoid paperclip

我有一个多租户应用,我使用Mongoid.override_session(current_user.customer_id)指向相应的客户数据库。我正在使用paperclip将照片保存到S3存储桶,我希望文件夹结构以customer_id开头,但我找不到从Mongoid获取当前会话或数据库的方法。我找到this question但是在Mongoid v4.0.1上答案对我不起作用。 current_user超出了设置回形针URL的模型代码范围,而回形针初始化程序也是如此。

1 个答案:

答案 0 :(得分:0)

如果它帮助了其他人,我发现这是一种方法,你可以在类或模型实例上运行

mongo_session.options[:database]

我将以下内容添加到我的回形针初始化程序中;

#myapp/config/initializer/paperclip.rb  
Paperclip.interpolates :customer_id do |attachment, style|
  attachment.instance.mongo_session.options[:database]
end

然后您可以在模型中引用:customer_id

has_mongoid_attached_file :image,
                            :storage => :s3,
                            :s3_credentials => File.join(Rails.root, 'config', 'aws.yml'),
                            :styles => {
                                :medium => '600x600>',
                                :small => '300x300>',
                                :thumb => '100x100>'
                            },
                            :path => ':customer_id/:style/:filename',
                            :url => '/:customer_id/:style/:filename'