我正在建立一个在线翻译平台。当作业完成翻译和保存时,我希望用户能够将翻译后的版本下载为文本文件。它目前保存在名为“target_text”的模型中的字符串中。
我知道在ruby中我可以使用这种方法:
File.open("translation.txt", 'w') {|f| f.write("my translated string") }
我假设我可以在“translation.txt”前面保存要保存的文件的位置,但我不确定我的应用程序中应该指定哪个文件夹?
此外,我希望将此文件附加到“作业”对象,方法与回形针可以附加文件的方式相同,不同之处在于它是启动服务器端。我应该怎么做呢?
我一直在谷歌搜索寻找答案,我想确保以最干净的方式做到这一点。我真的很感激指向一个好地方的方向来理解这个概念。
答案 0 :(得分:0)
我不太明白这个问题,但我希望这有助于......
而不是使用
File.open("translation.txt", 'w') {|f| f.write("my translated string") }
尝试使用以下
Tempfile.open(['translation', '.txt'], Rails.root.join('tmp')) do |file|
# this will create a temp file in RAILS_ROOT/tmp/ folder
# you can replace the 'translation' text part to any auto generated text for example
# Tempfile.open([@user.id.to_s, '_translation.txt'] will create
# RAILS_ROOT/tmp/1_translation.1fe2ed.txt
# the 1fe2ed is generated by Tempfile to avoid conflicting
begin
file << "my translated string"
# this creates the file
# add all the processing you need here... cause the next ensure block
# will close and delete this temp file... so that the tmp dir doesn't get big.
# you can for example add the file to paperclip attachment
@user.translation = file
# assuming that user has paperclip attachment called translation
ensure
# close and delete file
file.close
file.unlink
end
end
同时查看Tempfile docs ...这是我一直在使用的做法......不确定它是否是最好的......但它并没有创造迄今为止的任何问题 (即使使用回形针s3存储)