2016-07-13 5 views
1

モデルの名前を変更してテーブル名を更新した後、すべてのクリップクリップオブジェクトのファイル名を更新するにはどうすればよいですか?モデルの名前を変更した後にpaperclipファイル名を更新しますか?

Paperclipはモデル名を含むパスに保存します。私は、おそらくファイルパスを更新する移行の自動方法を探しています。あなたは、メソッドに新しいurlのオプションを渡す必要があります

+0

レコードを更新する必要がありますか? paperclipが保存するために使用するクラス名をオーバーライドするオプションがあるので、データを変更する必要はありません。 – neydroid

+0

名前を変更して別のモデルの名前を使用する必要があります。 –

答えて

0

これは、ペーパークリップが使用するデフォルトです:

https://github.com/thoughtbot/paperclip/blob/95acf3b898bd782f4429d42fd2d8812505390328/lib/paperclip/attachment.rb#L24

{ 
    path: ':rails_root/public:url', 
    url: '/system/:class/:attachment/:id_partition/:style/:filename' 
} 

あなたはする必要があります振る舞いを無効にして:classを新しいモデル名に変更すると、そのパスはURLを介して動的に決定されます。

class User < ActiveRecord::Base 
    has_attached_file :avatar, url: '/system/:class/:attachment/:id_partition/:style/:filename' 
end 

他のモデルurlオプションもオーバーライドしない限り、古いモデル名を使用する際には注意が必要です。

+0

'attachment_file_name'には実際のパスではなくファイル名のみが含まれています。 –

+0

申し訳ありませんが、あなたが正しいです、私は宝石のコードを見ています – neydroid

関連する問題