从app [Rails,Carrierwave]重命名目录

时间:2012-06-07 06:37:31

标签: ruby-on-rails

是否有可能从应用程序重命名目录?

我是通过FTP上传文件(因为它是很多文件而且很重要),并使用主题{model.title} - {model.place}命名目录。当我在应用程序中更改主题标题或位置时,目录名称现在是错误的,我必须通过连接到FTP重命名它。我想在我的应用程序中点击“编辑”时自动重命名这个目录。

使用carrierwave在rails 3.1.3中获得了应用。

2 个答案:

答案 0 :(得分:2)

您可以使用FileUtils

在Ruby中重命名目录
require 'fileutils'
FileUtils.mv old_directory_name, new_directory_name

您可以使用模型回调实现此目的:

class MyModel < ActiveRecord::Base
  # Callback triggered by a changed place or title
  before_save :change_directory_names

  private

  # Method that changes directory names
  def change_directory_name
    if self.title_changed?
      title = self.title.changes.flatten.drop(1)
      # Code here to change the directory name
      # Old title: title.first
      # New title: title.last
    elsif self.place_changed?
      place = self.place.changes.flatten.drop(1)
      # Code here to change the directory name
      # Old place: place.first
      # New place: place.last
    end
  end

答案 1 :(得分:1)

我认为用不会改变的东西命名你的目录会更有意义。为什么不直接使用Model.id?