LoginSignup
1
0

More than 5 years have passed since last update.

【未解決事件】某日、事件は起こった【Paperclip】

Last updated at Posted at 2018-05-15

前説

公開の手直しをしていると、paperclip関連でとある事件が起こりました。

某日、事件は起こった・・・

スクリーンショット 2018-05-16 6.24.31.png

paperclipで保存した画像が表示されない問題。

前提

Imagemagick
rails(4.2.0)
paperclip(6.0.0)->(4.8.0)でも試した
User画像をpaperclipで画像アップロードできる

今まではできてた?

スクリーンショット 2018-05-16 7.11.33.png

そう。ある日突然。
「事件発生後」に更新した画像はもう表示できない。
「事件発生前」の画像は表示されてる。

Viewでfile_fieldになってる?

出力

 <%= image_tag  @user.avatar.url %>

入力

<%= f.label :image %><br>
<%= f.file_field :avatar %>

なってる

データベースに格納されてないんじゃないの?

SQLで検索

select avatar_updated_at, avatar_file_name ,nickname from users;

スクリーンショット 2018-05-16 7.21.22.png

一番下、画像のユーザー「yyyyyy」には何らかの画像が割り当てられています。

modelとcontrollerはどうなってる?

model/user.rb
has_attached_file  :avatar,
             styles: { medium: "300x300#", thumb: "100x100#" },
        default_url: '/default.png'
validates_attachment_content_type :avatar,
 content_type: ["image/jpg","image/jpeg","image/png"]
controller/application_controller.rb
 def configure_permitted_parameters
    devise_parameter_sanitizer.permit(:account_update) do |u|
      u.permit(:email, :password,:password_confirmation, :nickname, :avatar,:field, :birth,:current_password,:tag_list, {:tag_list => []})
    end
    devise_parameter_sanitizer.permit(:sign_up) do |u|
      u.permit(:email, :password,:password_confirmation, :nickname, :avatar, :birth, :tag_list, {:tag_list => []})
    end
  end

もし、user画像が保存されていない場合、default.pngが表示される仕組みになっています。

スクリーンショット 2018-05-16 7.08.29.png

こんな感じ

ブラウザでnotfound出てるよな?

スクリーンショット 2018-05-16 7.17.01.png

格納先に行ってみよう

/public/system/users/avatar/000/000/id名

スクリーンショット 2018-05-16 7.17.53.png

「yyyyyy」のidは48。

確かに格納されていない・・・

やったこと

スクリーンショット 2018-05-16 7.03.50.png

データベースの画像更新履歴を見てみた。
「5/8 ユーザー名: 一護」に投稿した画像は難なく表示できていた。これが最新の更新成功履歴である。
(5/15はいずれも失敗)

スクリーンショット 2018-05-16 7.25.22.png

ということは5/8以降に変更した何かが問題を起こしている・・・?

Gitの更新履歴を見る。

スクリーンショット 2018-05-16 7.27.31.png

コミットしててよかった。Gitの重要性を再確認。

う〜ん、この。

よければアドバイスなどが欲しいです・・・

個人的な推測

paperclipの保存先が悪い???

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0