Closed1
Rails5.2から6.0に上げたらserializeが使えなくなった
概要
Railsを5.2から6.0にアップデートした際に serialize を使用しているカラムが保存できなくなった
以下のような users
テーブルで sweets で serialize を使用
id | name | sweets |
---|---|---|
1 | Taro | --- - candy - snack |
2 | Jiro | --- - chocolate - biscuit |
3 | Saburo | --- - cookie - gum |
model は以下のように記載
user.rb
class User < ApplicationRecord
serialize :sweets, Array
end
sweets を更新しようとすると下記エラーになり保存ができなくなった
Psych::DisallowedClass: Tried to load unspecified class: ActiveSupport::HashWithIndifferentAccess
環境
ruby 2.6.9p207 (2021-11-24 revision 67954) [x86_64-linux]
Rails 6.0.6
対応
以下のいずれかで対応する。
今回は2を実施した
- Psych のバージョンアップが原因なので、4系から3系にバージョンを下げる
-
config/application.rb
に以下を記載(非推奨っぽい)
config.active_record.yaml_column_permitted_classes = [
Symbol,
ActiveSupport::HashWithIndifferentAccess
]
-
config/application.rb
に以下を記載(一番非推奨っぽい)
config.active_record.use_yaml_unsafe_load = true
感想
serialize撲滅したい!!
参考
このスクラップは2022/10/17にクローズされました