2017-05-12 4 views
0

あるモデルから別のモデルに画像を移行したい。 私の古いモデルは次のようになります。Railsペーパークリップ1つのモデルから別のモデルへのハッシュ付きのコピーイメージ

class Post < ActiveRecord::Base 

    has_attached_file :logo, 
        url: '/test/post/logo', 
        path: ':rails_root/uploads/test/post/:id/logo/:hash', 
        hash_secret: 'secret', 
        styles: { thumb: ['200x150>', :jpg], medium: ['320x240>', :jpg], large: ['480x360>', :jpg] } 
end 

新しいモデルは古いもののように見えます。

new_logo = post.logo 
new_image.logo = new_logo 
new_image.save 

しかし残念ながら、IS動作しません:

現在、私は次のコードスニペットで画像を移行しよう。次のエラーが表示されます。

No such file or directory @ rb_sysopen - /abcde/fghjk/test/post/1/logo/43023e427c1deb69789bbf7b75cf32810fbb6354

ディレクトリでハッシュを検索すると、一部のハッシュと一致しません。

ハッシュなしではチャーミーのように機能しますが、ハッシュ付きの添付ファイルが必要です。

私の問題を解決するアイデアはありますか?

+0

はここに見えましたか? http://stackoverflow.com/questions/14224080/ruby-copy-a-paperclip-attachment-from-one-model-to-another –

+0

はい、この方法で試して、私は上記のエラーがあるbisを動作させるべきだと思った。 – puQ

+0

パスと定義されている古いイメージを保存したことがありますか? –

答えて

0

あなたは.pathを使用してファイルを読み込むと、ファイルオブジェクトを割り当てることができます。

new_image.logo = File.open(post.logo.path) 
new_image.save 
+0

私はそれを試しましたが、不思議なことに、パス内の計算されたハッシュが既存のものと一致しません。 – puQ

+0

ファイルはどこにあるのですか? "url: '/ test/post/logo'に設定されています。ハッシュを使わないと、パス設定に:ハッシュが含まれていないか、または:ハッシュワイルドカードをURL設定に追加する必要があります。 – arieljuod

+0

、urlには:idワイルドカードがありません! – arieljuod

関連する問題