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

标签 ruby architecture

不确定标题是否完整描述了我要问的问题,抱歉。

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

class Widget
  attr_accessor :model_type
  ...
end

和:

class ModelType
  MODEL1 = "model1"
  MODEL2 = "model2"
  MODEL3 = "model3"
end

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

case model_type
  when 'MODEL1'
    @model_type = ModelType::MODEL1
  ...
end

我觉得这很笨拙,所以我想知道是否有更好的 DRYer 方法来提供这种功能。

最佳答案

>> ModelType.const_get("MODEL1")

=> "model1"

Module const_get() rdoc

关于ruby - 在 Ruby 中,是否有更好的方法根据传入的同名字符串选择常量(或完全避免常量)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2650372/

相关文章:

ruby-on-rails - 在 Ruby on Rails 上的 ActiveRecord 中获取下一条/上一条记录

ruby-on-rails - Rails 中的 request.remote_ip 和 request.ip 有什么区别?

database - 多个数据库与一个数据库,ID 用于分隔组织

database-design - SaaS 数据库设计 - 多个数据库? split ?

c - 奇偶校验位和错误检测

RubyMonk 高级字符串操作

java - 来自 Java 的 Ruby 中的 HMAC

ruby - 如何从隐藏元素中提取数据代码属性

heroku - Redis 可以帮助规避数据库连接限制吗

c# - 将 csv 文件/excel 导入 sql 数据库 asp.net