Як ми можемо створити екземпляр класу з його рядка імен у Ruby-on-Rails?
Наприклад, ми маємо це ім'я у базі даних у такому форматі, як "Ім'я класу" або "ім'я_класу_нашого_класу".
Як ми можемо створити з нього об’єкт?
Рішення:
Шукав сам, але не знайшов, от і ось. Метод API Ruby-on-Rails
name = "ClassName"
instance = name.constantize.new
Він може бути навіть не відформатований, ми можемо користувальницький метод .classify
name = "my_super_class"
instance = name.classify.constantize.new
Звичайно, можливо, це не дуже «шлях Rails», але це вирішує його мету.
Object.const_get
а Classify - метод ActiveSupport, який намагається перетворити рядок у стандартне форматування класу. Те, що ви робите, ідентично відповіді Євгінея, з деякими додатковими перевірками. Хоча constantize, мабуть, є кращим рішенням (оскільки він перевіряє осудність), він допомагає зрозуміти інструменти, якими ви користуєтесь.