相关疑难解决方法(0)

如何检查是否定义了类?

如何将字符串转换为类名,但仅限于该类已存在?

如果Amber 已经是一个类,我可以通过以下方式从字符串到类:

Object.const_get("Amber")
Run Code Online (Sandbox Code Playgroud)

或(在Rails中)

"Amber".constantize
Run Code Online (Sandbox Code Playgroud)

NameError: uninitialized constant Amber如果Amber还没有上课,那么其中任何一个都会失败.

我的第一个想法是使用该defined?方法,但它不区分已存在的类和不存在的类:

>> defined?("Object".constantize)
=> "method"
>> defined?("AClassNameThatCouldNotPossiblyExist".constantize)
=> "method"
Run Code Online (Sandbox Code Playgroud)

那么在我尝试转换之前,如何测试字符串是否命名一个类?(好吧,begin/ rescueblock如何捕获NameError错误?太丑了?我同意......)

ruby class defined ruby-on-rails-3

69
推荐指数
4
解决办法
3万
查看次数

标签 统计

class ×1

defined ×1

ruby ×1

ruby-on-rails-3 ×1