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 сам: : символ Постоянный в рельсах Ответ выше был правильным, но я обнаружил документы, которые объясняют немного лучше: http://api.rubyonrails.org/classes/ActiveSupport/CoreExtensions/String/Inflections.html#M001360 В основном существуют два метода: .to_s.camelize - используется, когда у вас есть единственная форма (: post) .to_s.classify - используется, когда у вас есть множественная форма (: сообщения) Из этого вы вызываете константизацию и Виолу! у вас есть свой класс.
Ответ 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 сам: : символ Постоянный в рельсах Ответ выше был правильным, но я обнаружил документы, которые объясняют немного лучше: http://api.rubyonrails.org/classes/ActiveSupport/CoreExtensions/String/Inflections.html#M001360 В основном существуют два метода: .to_s.camelize - используется, когда у вас есть единственная форма (: post) .to_s.classify - используется, когда у вас есть множественная форма (: сообщения) Из этого вы вызываете константизацию и Виолу! у вас есть свой класс.