В Ruby есть лучший способ выбрать константу (или вообще избежать константы) на основе входящей строки с тем же именем? - PullRequest
1 голос
/ 16 апреля 2010

Не уверен, что заголовок полностью описывает проблему / вопрос, который я пытаюсь задать, извините.

Один из моих коллег-разработчиков создал классы как таковые:

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 для предоставления такого рода функциональности.

1 Ответ

4 голосов
/ 16 апреля 2010
>> ModelType.const_get("MODEL1")

=> "model1"

Модуль const_get () rdoc

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...