ruby-on-rails - 更改回形针附件上集成测试的路径

标签 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 适配器来实现这一点,但必须有更简单的方法。

最佳答案

我认为这已经过去了,你需要帮助 :) 但如果这对其他人有帮助 - 你可以使用 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'

关于ruby-on-rails - 更改回形针附件上集成测试的路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37005552/

相关文章:

ruby-on-rails - 如何从 View 调用 Rails Controller 中的自定义方法

ruby - 你如何使用 Rake::TestTask 来使用多个任务?

PHP 文件上传到 linux cPanel 显示成功,但找不到文件

ruby-on-rails - 如何解决 'libcurl' not found with Rails on Windows

html - 如何克服 Nokogiri 的 "unknown encoding name - macintosh"错误

ruby-on-rails - ROR 中的日期和时间

jquery - 上次更新后,Safari(iOS 和 OS X)上的 Ajax 文件上传中断

java - 如何使用JSP/Servlet将文件上传到服务器?

ruby-on-rails - Rails 应用程序中 CSS ID 和类的下划线是一种约定吗?

mysql - 当数据库不可用时,延迟的工作人员退出