Rails "try" 常数

Rails "try" a constant

我正在通过构建它们的命名空间和名称并使用 constantize.

来加载序列化程序

如果序列化程序不存在,那么这将抛出 未初始化常量 错误。

有什么方法可以尝试常量或在将名称转换为常量之前主动检查序列化程序是否存在?

你可以在那个地方用begin..rescue构造来处理那个异常。

您可以使用 Object.const_defined?:

'Serializer'.constantize if Object.const_defined?('Serializer')

或者,您也可以使用 Ruby 方法 Object.const_get 而不是 Rails 方法:

Object.const_get('Serializer')

您只是用'defined? CONST_NAME'检查了一下。