Rails: Как преобразовать символ в класс
Учитывая символ в рельсах, как мне получить класс? Поэтому я мог бы назвать что-то вроде:
give_class(:post).find(:all)
или аналогичный.
Ответы
Ответ 1
Сначала преобразуем в строку.
class_name = symbol.to_s
Оттуда вам нужно будет отформатировать строку в соответствующее имя класса, используя методы, предоставленные ActiveSupport Inflector.
-
camelize
превратит 'my_module'
в 'MyModule'
-
classify
превратит 'my_models'
в 'MyModel'
camelize
, скорее всего, тот, который вы хотите, учитывая ваш фрагмент кода.
Затем используйте метод constantize
:
klass = class_name.constantize
Классный!
Ответ 2
Я искал stackoverflow для этого ответа и не мог найти его в тексте, как я его искал, поэтому я решил, что Q & A сам:
Ответ выше был правильным, но я обнаружил документы, которые объясняют немного лучше:
В основном существуют два метода:
- .to_s.camelize - используется, когда у вас есть единственная форма (: post)
- .to_s.classify - используется, когда у вас есть множественная форма (: сообщения)
Из этого вы вызываете константизацию и Виолу! у вас есть свой класс.