我现在正在寻找一个方便的方法,或者甚至更好,一个宝石,这将允许我CRUD
档案。
具体需求是:
:text
字符串创建文件。 (和控制文件类型。例如test.js
):text
CRUD
Powerhouse。现在,我当然知道没有Magic Willie可以独自完成这一切,我只是在寻找一个正确的方向,从哪里开始。
使用案例
我们有一个documents
控制器,其中包含变量:
:title
:body
:user_id
:body
(简单的text_area输入)包含一些.js
代码。如何根据用户输入的test.js
创建文件(例如:body
)。
E.g。只需创建文件=> File.open('text.js', 'w') { |file| file.write(@something.body) }
def create
@script = current_user.scripts.build(script_params)
# Creating Folder (if it doesn't exist already)
directory_name = "#{Rails.root}/public/userscripts/#{@script.user_id}"
Dir.mkdir(directory_name) unless File.exists?(directory_name)
# Write the file with model attribute :source
File.open("public/userscripts/#{@script.user_id}/#{@script.name}.user.js", 'w') { |file| file.write(@script.source) }
end
答案 0 :(得分:1)
Paperclip将允许您附加文件,您也可以更新它们。
您可以创建临时文件,将其分配给附件属性,然后保存模型。
# create and write a file with the contents you want
open "/tmp/tmpfile" do |f|
model.attachment = f
model.save!
end
您可以将其放在before_save
过滤器中,以便始终更新文件附件。
class Model < ActiveRecord::Base
has_attached_file attachment
before_save :update_attachment
def update_attachment
File.open("/tmp/tmpfile", 'w') { |file| file.write(self.body) }
open "/tmp/tmpfile" do |f|
self.attachment = f
self.attachment_content_type = "text/javascript"
end
end