我想要一些反馈和/或帮助。
我正在接受这个测试
scenario 'can create a new post' do
attach_file('Image', 'spec/files/hello-world.png')
fill_in 'Caption', with: 'Hello World! This is the first post!'
click_button 'Create Post'
expect(page).to have_css("img[src*='hello-world.png']")
expect(page).to have_content('Post was successfully created')
end
此测试通过Carrierwave将图像上传到uploads/post/image/1/hello-world.png
,这可能是开发环境中的相同路径等,所以我想知道这是否会导致文件和帖子之间出现任何问题。
我的问题是,我是否需要在每个环境中单独保存文件上传内容,还是Rails可以在内部管理?
答案 0 :(得分:0)
存储文件的位置是defined in a Carrierwave Uploader by the method store_dir
。如果您需要分离在不同环境中创建的文件,最简单的解决方案是将Rails.env
添加到路径中:
def store_dir
@store_dir ||= File.join(
'public',
'uploads',
Rails.env,
model.class.table_name.to_s,
mounted_as.to_s,
model.id.to_s
)
end
这会创建一条路径:public/uploads/production/posts/image/1/image.png