Rails предоставляет метод с именем classify
для класса String
для этой цели.
:users.to_s.classify.constantize
#User
:line_items.to_s.classify.constantize
#LineItem
Редактировать:
Если вы пытаетесь получитьДля класса, связанного с ассоциацией, используйте этот подход:
Author.reflect_on_association(:books).klass
# => Book
Это будет касаться сценария, в котором имя ассоциации не соответствует имени класса.
Например:
class Order
has_many :line_items
has_many :active_line_items, :class_name => "LineItem",
:conditions => {:deleted => false}
end
В приведенном выше примере :active_line_items
приведет к ActiveLineItem
, и наш оригинальный код выдаст ошибку.
Подробнее об этом здесь .