Ruby on Rail - 创建新记录时创建文件夹和.txt文件

时间:2016-10-17 18:02:49

标签: ruby-on-rails ruby file directory

我正在构建一个应用程序,公司可以在其帐户下添加多个

我想要达到的目标是:当域created时,在我的public/domains文件夹中,我想创建一个带文件夹名称的新文件夹 => domain id并添加具有相同命名约定的.txt文件。

示例:

Public // This is public folder in Rails
  --- domains
        ---- 2 // This is domain ID
             --- 2.txt

我现在拥有的:

class Domain < ActiveRecord::Base
  def create_folder
    dir = Dir.mkdir("#{Rails.root}/public/domains/#{self.id}")
    file = File.dirname("#{Rails.root}/public/domains/#{self.id}/#{self.id}.txt")
  end
end

这会创建文件夹,但不会创建.txt文件。

1 个答案:

答案 0 :(得分:0)

filename = Rails.root.join("/public/domains/#{id}/#{id}.txt") File.open(filename, 'wb') do |file| file << "My content" file << "More content" end 无法创建文件。

你想:

require 'fileutils'
id = 123
filename = "/tmp/public/domains/#{id}/#{id}.txt"
FileUtils.mkdir_p(File.dirname(filename))
File.open(filename, 'wb') do |file|
  file << "My content"
  file << "More content"
end

请务必在

之前创建目录

至于你的用例:

不要使用文件。不要把它公开存放。如果需要,请使用Redis或类似产品。但首先尝试一下,如果你的数据库无法应对负载。或者你试过并达到极限?

请注意 / public 中的所有内容都是公开,这意味着可以通过您的网络服务器访问它。

非Rails示例:

$('.js-stars *').on('click', function(event) {
  var count = $(this).data('stars');
  alert(count + ' star(s) selected');
  event.stopPropagation();
});