重命名模型和迁移数据库时,如何重命名用于在carrierwave中上传的文件夹?

时间:2017-02-27 19:59:00

标签: ruby-on-rails carrierwave rails-migrations

我正在尝试重命名一个模型和相应的表,它很好。上传文件夹怎么样?使用类似这样的东西将上传器文件夹绑定到模型类名。现在班级名称已经改变了。

class CsvImportUploaderUploader < CarrierWave::Uploader::Base
  permissions 0755

  storage :file

  def store_dir
    "uploads/#{model.class.to_s.underscore}/#{mounted_as}/#{model.id}"
  end
end

1 个答案:

答案 0 :(得分:0)

您可以继续使用相同的型号名称。 如果您有一个可以从以下转换的用户模型:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

using Android.App;
using Android.Content;
using Android.OS;
using Android.Runtime;
using Android.Util;
using Android.Views;
using Android.Widget;

namespace LottoGenie.Androidv2
{
 public class DashboardFragment : Fragment
 {
    public override void OnCreate(Bundle savedInstanceState)
    {
        base.OnCreate(savedInstanceState);

        // Create your fragment here
    }

    public override View OnCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState)
    {
        // Use this to return your custom view for this Fragment
        // return inflater.Inflate(Resource.Layout.YourFragment, container, false);
        View view = inflater.Inflate(Resource.Layout.homeLayout, container, false);
        return view;//base.OnCreateView (inflater.Inflate(Resource.Layout.homeLayout, container, savedInstanceState);
    }
}
}

model.class.to_s.underscore只返回类名本身作为一个字符串下划线,这是&#34; user&#34;在这个例子中。

如果你想保留所有内容,只需按字面意思写下来:

User => user

如果您不关心这个名字,事情就会存放在不同的文件夹中。 如果您有用户模型并将其更改为Customer模型,则会更改为:

"uploads/#{model.class.to_s.underscore}/#{mounted_as}/#{model.id}"
"uploads/user/#{mounted_as}/#{model.id}"

如您所见,它们只会存储在不同的文件夹中。您的所有链接仍应继续有效。