Właśnie zaczynam pracę z moją pierwszą aplikacją Ruby on Rails. Mam kilka różnych modeli, widoków, kontrolerów i tak dalej.
Chcę znaleźć dobre miejsce do przyklejenia definicji prawdziwie globalnych stałych, które mają zastosowanie w całej mojej aplikacji. W szczególności dotyczą one zarówno logiki moich modeli, jak i decyzji podjętych w moich poglądach. Nie mogę znaleźć SUCHEGO miejsca, w którym można by umieścić te definicje, w których są one dostępne zarówno dla wszystkich moich modeli, jak i we wszystkich moich widokach.
Aby podać konkretny przykład, chcę stałą COLOURS = ['white', 'blue', 'black', 'red', 'green']
. Jest to stosowane wszędzie, zarówno w modelach, jak i widokach. Gdzie mogę to zdefiniować w jednym miejscu, aby było dostępne?
Co próbowałem:
- Zmienne klasy stałej w pliku model.rb, z którymi są najbardziej skojarzone, takie jak
@@COLOURS = [...]
. Ale nie mogłem znaleźć rozsądnego sposobu, aby to zdefiniować, abym mógł pisać w swoich poglądach,Card.COLOURS
a nie coś w stylu kludgyCard.first.COLOURS
. - Metoda na modelu, coś w rodzaju
def colours ['white',...] end
- ten sam problem. - Metoda w application_helper.rb - do tej pory to robię, ale pomocniki są dostępne tylko w widokach, a nie w modelach
- Wydaje mi się, że mogłem wypróbować coś w application.rb lub environment.rb, ale te nie wydają się słuszne (i one też nie działają)
Czy po prostu nie ma sposobu, aby zdefiniować coś, co byłoby dostępne zarówno z modeli, jak i widoków? Mam na myśli, że wiem, że modele i widoki powinny być oddzielne, ale na pewno w niektórych domenach będą potrzebne momenty, aby odwoływać się do tej samej wiedzy specyficznej dla domeny?