poniedziałek, 19 grudnia 2011

Jak zamienić string na nazwę klasy

Napotkałem na taki problem: nazwy klas (modeli) mam złożone w postaci zwykłych stringów czyli klasycznych ciągów znaków. Chciałem używać tych stringów jako normalnych klas.

zamiast:
  @employees=Employee.all

użyłem czegoś takiego:
  class_name="Employee"
  @employees=Kernel.const_get(class_name).all

Na pierwszy rzut oka wydaje się to niepotrzebne. Do czasu...

1 komentarz:

  1. Jeżeli w projekt masz wpięty Active Support to możesz też zrobić:

    class_name="Employee"
    @employees=class_name.constantize.all

    http://as.rubyonrails.org/classes/ActiveSupport/CoreExtensions/String/Inflections.html#M000390

    OdpowiedzUsuń