尝试加载未指定的类:ActiveSupport::TimeWithZone - Psych::DisallowedClass

Nik*_*hev 15 yaml ruby-on-rails activesupport

有谁知道如何解决这个异常?不确定它是否相关,但它落在#discard来自 gem 的方法调用上discard

if object.discard
   # Psych::DisallowedClass:
   #   Tried to load unspecified class: ActiveSupport::TimeWithZone
Run Code Online (Sandbox Code Playgroud)

我已尝试将以下每个配置设置添加到 config/application.rb 但问题仍然存在(没有 spring 运行,没有预加载)

# config.active_record.yaml_column_permitted_classes = [Symbol, Hash, Array, ActiveSupport::HashWithIndifferentAccess, ActiveSupport::TimeWithZone, Time]
# config.active_record.use_yaml_unsafe_load
# config.active_support.use_yaml_unsafe_load
Run Code Online (Sandbox Code Playgroud)

Ruby 版本:3.1.2 | 导轨版本:6.1.7

相关问题:

使用 YAML.load_file 时升级到 Ruby 3.1 会导致 Psych::DisallowedClass 异常

作为临时解决方法,我已回滚到6.1.6Rails 版本,但我正在寻找此问题的正确解决方案。

erw*_*win 12

将以下内容添加到文件中config/application.rb

config.active_record.yaml_column_permitted_classes = [Symbol, Date, Time, ActiveSupport::TimeWithZone, ActiveSupport::TimeZone]
Run Code Online (Sandbox Code Playgroud)

它应该解决这个问题。然后重新启动服务器和reload!Rails 控制台以确保其正常工作。

感谢上面的评论提供了这个解决方案。