Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Ruby中,有没有更好的方法根据同名的传入字符串选择常量(或完全避免常量)?_Ruby_Architecture - Fatal编程技术网

在Ruby中,有没有更好的方法根据同名的传入字符串选择常量(或完全避免常量)?

在Ruby中,有没有更好的方法根据同名的传入字符串选择常量(或完全避免常量)?,ruby,architecture,Ruby,Architecture,不确定标题是否完全描述了我想问的问题,抱歉 我的一位开发伙伴创建了这样的类: class Widget attr_accessor :model_type ... end 以及: 现在,他希望我将检索到的字符串“MODEL1”转换为常量。因此,当他在其他地方引用该模型时,他可以使用ModelType::MODEL1(编辑:传入字符串将恰好是常量的名称)。显然,我必须从字符串中转换,我得到的字符串如下所示: case model_type when 'MODEL1' @mod

不确定标题是否完全描述了我想问的问题,抱歉

我的一位开发伙伴创建了这样的类:

class Widget
  attr_accessor :model_type
  ...
end
以及:

现在,他希望我将检索到的字符串
“MODEL1”
转换为常量。因此,当他在其他地方引用该模型时,他可以使用
ModelType::MODEL1
(编辑:传入字符串将恰好是常量的名称)。显然,我必须从字符串中转换,我得到的字符串如下所示:

case model_type
  when 'MODEL1'
    @model_type = ModelType::MODEL1
  ...
end
我觉得这很笨重,所以我想知道是否有更好的方式来提供这种功能

>> ModelType.const_get("MODEL1")

=> "model1"


提及您实际使用的模型名称字符串类型而不是
MODEL1
,可能会很有用,因为您可以在符号之间转换、大写、复数等方面做一些巧妙的事情。感谢Anurag,它将更新,基本上ModelType::MODEL1将与“MODEL1”完全匹配提到您实际使用的模型名称字符串而不是
MODEL1
,可能会很有用,因为您可以在符号、大写、复数等之间进行转换。感谢Anurag,它将更新,基本上ModelType::MODEL1将与“MODEL1”完全匹配
>> ModelType.const_get("MODEL1")

=> "model1"