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

vsdwdz23  于 2023-03-31  发布在  Ruby
关注(0)|答案(1)|浏览(208)

有人知道如何修复这个异常吗?不知道是否相关,但它落在discard gem的#discard方法调用上。

if object.discard
   # Psych::DisallowedClass:
   #   Tried to load unspecified class: ActiveSupport::TimeWithZone

我已经尝试了以下添加到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

Ruby版本:3.1.2|导轨版本:6.1.7
相关问题:
Upgrading to Ruby 3.1 causes Psych::DisallowedClass exception when using YAML.load_file
作为一个临时的解决方法,我已经回滚到6.1.6 Rails版本,但我正在寻找一个合适的解决方案来解决这个问题。

ndasle7k

ndasle7k1#

config/application.rb中添加:

config.active_record.yaml_column_permitted_classes = 
[Symbol, Date, Time, ActiveSupport::TimeWithZone, ActiveSupport::TimeZone]

解决了这个问题。重新启动服务器和reload! rails控制台以确定。
Credit @ziv-galili对解决方案的评论。

相关问题