1

これが私の質問です。アバターが1つ付いたユーザーモデルがあります。このモデルには多くの個人的な写真があります (accepts_nested_attributes_for を使用)。

ユーザーアバターが何であれ、ユーザーオブジェクトを保存した後、個人の写真を自動的に初期化できるようにしたいと考えています。たとえば、ボブが自分のアバターをアップロードすると、ボブはアバター画像から生成された 1 枚の個人的な写真 (正しいさまざまなクリップ スタイル) を自動的に持ちます。

これを行う方法がよくわかりません。モデルのコントローラーまたはユーザーに after_save フックを配置しますか? 私はdbストレージでPaperclipを使用しているので、保存中に何らかの方法でこれが初期化されたので、元に戻す必要がなくなるとよいでしょう...隠しフォームフィールドを使用できますか?

4

1 に答える 1

0

正直なところ、この一連の行動をお勧めするかどうかはわかりません。多くの人が写真ではないアバターをアップロードしています。これを行う場合、アバターを同時に削除せずに写真を削除するオプションをユーザーに提供する必要があります。これは、添付ファイルを複製する必要があることを意味します。そのためには、コールバックにフックする必要がありafter_avatar_post_processます。このコールバックで、新しい個人用の写真オブジェクトを作成します。写真モデルのphoto添付ファイルで、 のようなものを呼び出しますpersonal_photo.photo.assign(avatar.path)。うまくいくはずだと思いますが、試していません。私の主な懸念は、assign呼び出しが添付ファイルの新しい場所を作成しない可能性があることです。あると思いますが、確実なことはわかりません。少なくとも、それはあなたがしなければならないことの近くにあり、あなたを正しい方向に向かわせるはずです.

于 2009-10-29T23:03:00.777 に答える