Mam model, który ma wiele innych modeli, ale ten model musi mieć tylko 10 lub mniej identyfikatorów.
Powiedzmy, że tak, łazienka, kuchnia, salon, tak dla argumentów, a nowe rekordy prawdopodobnie nigdy nie będą musiały się zmieniać.
Jaki jest najlepszy sposób na stworzenie takiego modelu, który nie korzysta z tabeli bazy danych?
2 odpowiedzi
Mimo że kolekcja wierszy nigdy się nie zmienia, nadal warto mieć to jako tabelę w bazie danych, aby wykorzystać relacje ActiveRecord. Mniej wymyślnym przykładem może być tabela bazy danych zawierająca listę stanów USA. Jest bardzo mało prawdopodobne, aby to się zmieniło i prawdopodobnie miałoby tylko kilka kolumn (nazwa stanu i skrót stanu). Jednak przechowując je w bazie danych i wspierając je ActiveRecord, zachowujesz możliwość wykonywania przydatnych rzeczy, takich jak wyszukiwanie wszystkich użytkowników w danym stanie przy użyciu konwencjonalnej semantyki rails.
Biorąc to pod uwagę, alternatywą byłoby po prostu utworzenie klasy, którą trzymasz w katalogu modeli, która nie dziedziczy z ActiveRecord, a następnie albo zapełnij ją raz z bazy danych, gdy aplikacja się ładuje, albo po prostu wypełnij ją ręcznie.
Podobne pytanie zadano wczoraj, a jedna z odpowiedzi proponuje mechanizm wspierania czegoś podobnego do tego, co chcesz zrobić:
Jak stworzyć klasę statyczną reprezentującą to, co znajduje się w bazie danych?
To może nie są najlepsze praktyki, ale aby rozwiązać ten sam problem, właśnie określiłem kolekcję w moim modelu, tak jak poniżej:
ROOM_TYPES = [ "Bathroom", "Living Room", "Kitchen" ]
Następnie w widoku:
<%= f.select(:room_type, Project::ROOM_TYPES, {:prompt => '...'}) %>
(zastąp Project
rzeczywistą nazwą modelu.)
Super proste, prawie bez konfiguracji. Widzę, jak trudno byłoby to utrzymać, ponieważ nie ma możliwości dodawania elementów bez dostępu do kodu Rails, ale szybko wykonuje to zadanie.
Podobne pytania
Powiązane pytania
Nowe pytania
ruby-on-rails
Ruby on Rails to framework aplikacji internetowych typu open source z pełnym stosem, napisany w języku Ruby. Opiera się na popularnym modelu frameworkowym MVC i jest znany ze swojego podejścia do tworzenia aplikacji „konwencja zamiast konfiguracji”.