Как преобразовать имя класса модуля в символ в рельсах

В файле инициализатора рельсов есть строка для настройки объектов активности, которая принимает такие символы:

config.objects += [ :room, :hotel, ..etc ]

Эти символы представляют классы, которые я хочу настроить.

Моя проблема в том, что я использую движок rails, который определяет класс модуля «Blogit::Post», который я хочу настроить. Как добавить это в массив конфигурации в качестве символа?


person Anchor    schedule 18.08.2013    source источник
comment
Что использует config.objects?   -  person Andrew Marshall    schedule 18.08.2013
comment
это файл инициализатора ruby: SocialStream.setup do |config| ... config.objects += [ :room, :hotel, :blogpost ] ... end   -  person Anchor    schedule 18.08.2013


Ответы (1)


Вы можете управлять верблюжьими регистрами и пространствами имен в классификации строк, добавляя символы подчеркивания или косые черты к вашим config.objects.

Косая черта классифицирует пространство имен:

:"blogit/post".classify #=> Blogit::Post

Подчеркивания относятся к верблюжьему регистру:

:blogit_post.classify #=> BlogitPost

Итак, в вашем случае решение будет таким:

config.objects += [ :room, :hotel, :"blogit/post", ..etc ]

Или, если вы используете ruby ​​2.0, вы можете использовать гораздо более чистый способ создания экземпляра символа массива:

config.objects += %i(room hotel blogit/post)
person Beat Richartz    schedule 18.08.2013