ActiveStorageエラー(タスケテ)

PF修正中ある日のこと、突然ユーザー詳細画面でエラーに・・・(悲劇)

 

なんだこれ・・・

 

というのも、つい数時間前まで普通に動いていたのですが

変更点としてはせいぜいレイアウト変えたり整理するため

rails db:resetでレコードを初期化したり(特に初めて行ったわけではない)

 

で、どの状態でエラーが出るかというと

「ユーザー新規登録→登録ボタンから詳細ページに遷移→getメソッドの途中でエラー」

 

 

よし、しらべるぞ。

 

コンソールでまずはUser.allと・・

→登録したユーザー情報出てくる。登録自体はできているのね。

 

次にプロフィール画像がattachされているか

 

user = User.first

user.profile_image.attached?

ActiveStorage::Attachment Load (0.2ms)  SELECT "active_storage_attachments".* FROM "active_storage_attachments" WHERE

"active_storage_attachments"."record_id" = ? AND

"active_storage_attachments"."record_type" = ? AND

"active_storage_attachments"."name" = ? LIMIT ?  [["record_id", 1], ["record_type", "User"], ["name", "profile_image"], ["LIMIT", 1]]
 => false 

 

む?attachされてないってこと・・・?ですよね・・・

 

そのままコンソールで手入力で登録してみる・・・

2.6.3 :004 > file_path = Rails.root.join('app/assets/images/no_image.jpg')
 => #<Pathname:/home/ec2-user/environment/style/app/assets/images/no_image.jpg> 


2.6.3 :005 > profile_image.attach(io: File.open(file_path), filename: 'default-image.jpg', content_type: 'image/jpeg')
Traceback (most recent call last):
        1: from (irb):5
NameError (undefined local variable or method `profile_image' for main:Object)

 

profile_imageがネームエラーだと・・・?(白目)

あばばばば

 

 

次、プロフィール画像が恋しいのでひとまずView側で分岐

 

<div class="profile-image">
          <% if @user.profile_image.attached? %>
            <%= image_tag @user.get_profile_image(200, 200), class: "profile" %>
          <% else %>
            <%= image_tag 'no_image.jpg' %>
          <% end %>
  </div>

 

 

 

ここからeditで画像登録できるか・・・

 

 

・・・

 

はい、同じくエラー。ですよね

 

気になる点が

 

 

 

"ActionDispatch::Http::UploadedFile"

これは一体・・

 

参考(

ActionDispatch::Http::UploadedFileを紐解く

大丈夫らしい。

 

ってことはデータを送れてはいるものの表示ができないと・・・

 

 

一旦最後のあがき

profile_image.variant(resize_to_limit: [width, height])
 

思い切ってprocessed除いてみることに

 

 

edit・・・

 

 

 

 

やはりattachされていない・・・

 

 

 

<進展>

 

https://qiita.com/yutackall/items/8809f08635ec628709c5

 

こちらを参考に手打ちで登録してみることに・・

user.profile_image.attach(io: File.open("#{Rails.root}/app/assets/images/no_image.jpg"), filename: "default-image.jpg", content_type: 'image/jpeg')

 

 

 

Userを見つけられていない・・・?

 

 

ちなみに正常なものだと・・

 

User.exist?は働かないみたい・・

 

一旦、ActiveStorageを整理

(参考:Railsガイドhttps://railsguides.jp/active_storage_overview.html)

 

 

そもそもActiveStorage自体は3つのテーブルで成り立っている

active_storage_variant_records

active_storage_blobs

active_storage_attachments