1
0

More than 1 year has passed since last update.

Rails 7.0でないとActiveStorageのvariantに名前をつけられない

Posted at

原因はバージョン

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に対応してなかったことが判明…

まとめ

自分含め、初学者はわからないことが多く様々なところから情報を集めて解決に取り組むと思います。情報を集めるときは バージョンの違い を意識してみるようにしましよう!!

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