原因はバージョン
Rails 6.1を使ってるのにRails 7.0向けのガイドを見てました。昨日上司に「バージョン違いに気をつけてね」って言われたばかり!!
教えてもらってなかったらもっとハマってたはず…
困ったこと
ActiveStorageを使用して画像を保存することに挑戦していました。Railsガイドを読みながら、セットアップや保存処理までは実装できましたが、画像サイズを調整する以下の記述がうまくいきませんでした…。
# Railsガイド ActiveStorageの概要 has_attached_oneより引用
class User < ApplicationRecord
has_one_attached :avatar do |attachable|
attachable.variant :thumb, resize_to_limit: [100, 100]
end
end
undefined method `deep_symbolize_keys' for :thumb:Symbol
生成される添付可能オブジェクトでvariantメソッドを呼ぶと、添付ファイルごとに特定のバリアント(サイズ違いの画像)を生成できます。
引用元:Railsガイド ActiveStorageの概要
検索
大体自分が引っかかるようなエラーは他にも引っかかってる人がいるので検索してみました。
まずはエラー文から
Are active storage named variants still a thing?を見てバージョンが原因かも、と気づきます。
I think it’s the other way around, it’s a new feature already visible in the edge guides you linked to, but not yet available in your version of Rails.
Rails 6.1のガイドを見る
RailsガイドはRails 7.0向けだったことに気づくも、日本語版はお試し会員や有料会員にならないと古いバージョンのガイドを見れないことがわかりました。
英語版のRailsガイドを見てみたらv6.1.6.1向けが閲覧できたので、うまく動かない記述の箇所があるか探してみました。
6.1には書かれてなかった
6.1.6.1向けのhas-one-attachedの章には困ったことで引用した記述例がないことがわかり、Rails 6.1に対応してなかったことが判明…
まとめ
自分含め、初学者はわからないことが多く様々なところから情報を集めて解決に取り組むと思います。情報を集めるときは バージョンの違い を意識してみるようにしましよう!!