更改回形针附件的集成测试路径

时间:2016-05-03 13:28:26

标签: ruby-on-rails ruby file-upload rspec paperclip

Paperclip的文档提到您可以通过将以下代码放在test.rb环境文件中来更改测试的上传路径:

Paperclip::Attachment.default_options[:path] = "#{Rails.root}/spec/test_files/:class/:id_partition/:style.:extension"

我遇到的问题是附件在模型中设置了路径,不会被覆盖:

has_attached_file :photo, path: ':attachment/:id/:style.:extension'

当我运行测试时,文件会上传到/photo/文件夹,而不是/spec/test_files/

我可以通过编写自定义Paperclip适配器来实现这一点,但必须有一种更简单的方法。

2 个答案:

答案 0 :(得分:3)

我认为这已经远远超出了您的需要:),但是在偶然的情况下这可以帮助其他人-您可以使用paperclip interpolations例如

# config/initializers/paperclip.rb
Paperclip.interpolates :path_prefix do |_attachment, _style|
  if Rails.env.test?
    Rails.root.join("spec/test_files/")
  else
    ""
  end
end

然后更新您的自定义路径以使用前缀:

has_attached_file :photo, path: ':path_prefix:attachment/:id/:style.:extension'

答案 1 :(得分:0)

我有类似的问题,我无法创建文件夹,而是放置它:

Paperclip::Attachment.default_options[:path] = "#{Rails.root}/spec/test_files/:class/:id_partition/:style.:extension"

在环境/ test.rb中,正如说明所说,我将它添加到rails_helper.rb

希望它有所帮助。