Szukam opinii na temat mojego obecnego planu wdrażania niestandardowych pól w szynach. Jestem nowy w rozwoju rails i aplikacji i doceniam wszelkie uwagi bardziej doświadczonych osób.Niestandardowe pola w Railsach, które działają jako szablon dla przyszłych wpisów.
Tło
Aplikacja: Śledzić żywności i napojów degustacji.
Co Próbuję modelu
- Użytkownik tworzy nowy typ próbki.
- Nazywają go: „Wino”
- Decydują dla swojej firmy, chcieliby, aby śledzić z następujących cech: pochodzenie, winogrono, firma, rodzaj elewacji, utrzymując temperaturę i inne.
- Jedynymi założeniami na temat typu próbki, którą wykonała moja baza danych, jest to, że ma ona nazwę. kawa, wino itp.) pozostałe są polami niestandardowymi określonymi przez użytkownika.
Teraz, gdy został utworzony typ próbki.
- Użytkownik zaczyna tworzyć próbki wina typu próbki.
- Wybierają utworzyć próbkę, wybierz rodzaj wina.
- Pola, które muszą wypełnić, to te, które podano wcześniej.
- pochodzenia włożyli: Francja, w rodzaju winogron: włożyli Chardonnay, etc ..
-
Mój plan podejście jest następujące:
Gdy użytkownik tworzy typ próbki, przechowuje niestandardowe pola jako tablicę lub w jakimś formacie łańcuchowym i przechowuje je pod kolumną o nazwie dane.
SampleType
nazwa
wino
dane
[origin, grape_type, company, ...]
Gdy użytkownik chce utworzyć próbkę typu Wino: Patrzę próbkę rodzaj wina, dla każdego klucza w kolumnie danych, tworzy fo pola rm. Gdy użytkownik przesyła dane, tworzę skrót wszystkich nazw pól niestandardowych i odpowiadających im danych.I szeregować je i przechowywać go w hash w kolumnie danych jak takie:
Sample
typu
wino
dane
{ origin: "France", grape_type: "Pinot Grigio, ... }
Mój plan w tej chwili używać hstore PostgreSQL do implementacji mieszania w kolumnie danych.
Moje pytania są następujące:
- Czy to ważne rozwiązanie dla co usiłuję zrobić?
- Czy napotkasz problemy, gdy użytkownicy zmieniają swoje niestandardowe pola?
- Jakieś inne sprawy, które powinienem wziąć pod uwagę?
- Czy mongodb i inne takie bazy danych są lepszym wyborem dla tego typu modelu?
Byłem przy użyciu następujących linków jako odniesienie: http://schneems.com/post/19298469372/you-got-nosql-in-my-postgres-using-hstore-in-rails http://blog.artlogic.com/2012/09/13/custom-fields-in-rails/
Jak również wiele innych postów przepełnienia stosu, jednak żadne z nich nie używają go w sposób wspomniany powyżej.
Wszelkie uwagi są mile widziane.
scrozier, dziękuję za odpowiedź. Planowałem także wdrażanie podstawowych narzędzi analitycznych, wyszukiwanie i sortowanie również w tych dziedzinach, choć teraz jestem bardziej zmęczony ich implementacją. Czy nie ma żadnego wzorca do robienia tego typu rzeczy dobrze, wydaje się, że CMS będzie musiał przez cały czas radzić sobie z tego rodzaju problemem. Pozostawię pytanie otwarte na trochę dłużej, dopóki nie przyjmiemy odpowiedzi. – jtgi