Ruby on rails 铁路";试一试;恒量

Ruby on rails 铁路";试一试;恒量,ruby-on-rails,ruby,activerecord,serialization,Ruby On Rails,Ruby,Activerecord,Serialization,我通过构建名称空间和名称并使用constantize加载序列化程序 如果序列化程序不存在,则会抛出未初始化常量错误 在将名称转换为常量之前,我有没有办法尝试该常量或主动检查序列化程序是否存在?您可以使用begin..rescueconstruction在该位置处理该异常。您可以使用: 或者,您也可以使用Ruby方法代替Rails方法: Object.const_get('Serializer') 你只是用“定义”来检查它?常数名称' 谢谢。虽然这两个答案都很好,但我还是决定使用这个答案,让它更

我通过构建名称空间和名称并使用
constantize
加载序列化程序

如果序列化程序不存在,则会抛出未初始化常量错误


在将名称转换为常量之前,我有没有办法尝试该常量或主动检查序列化程序是否存在?

您可以使用
begin..rescue
construction在该位置处理该异常。

您可以使用:

或者,您也可以使用Ruby方法代替Rails方法:

Object.const_get('Serializer')

你只是用“定义”来检查它?常数名称'

谢谢。虽然这两个答案都很好,但我还是决定使用这个答案,让它更内联。当我可以的时候会标记为答案。这个答案不能很好地自动加载<代码>>是否定义了Object.const_?('ReportExporters::Summary::CsvExporter')=>false但类确实存在
>ReportExporters::Summary::CsvExporter=>ReportExporter::Summary::CsvExporter=>:14:in
const_get'`很好的回答@RafaPaezDo如果可以避免异常,就不要处理它们。@RafaPaez当然可以。但是,如果类还没有加载,但仍然存在,那么您将不会触发Rails自动加载。我认为自动加载是另一个问题,应该事先解决。感谢您的评论@Ivan您如何处理缺少的序列化程序?引发一个
namererror
看起来还不错。在我的例子中,我只是默认使用
ActiveRecord::DefaultSerializer
Object.const_get('Serializer')