Świeże spojrzenie i rada - POS dla restauracji

Witam,

Jako, że na uczelni wziąłem sobie do zrobienia projekt ala POS dla restauracji na RoR, to chciałbym poprosić o małą radę i spojrzenie na mój projekt z trzeciej osoby.

Obecnie mam kilka modeli skojarzonych ze sobą tj: Stoliki, Zamówienia, Obiekty zamówień, Produkty i Kategorie
Walczę teraz z ogarnięciem składania zamówień.

Od strony z layoutem sali (model i kontroler stolików) potrzebuje zrobić nowe zamówienie dla określonego stolika.

Na chwilę obecną mam na każdym generowanym z bazy stoliku formularz który wysyła do metody create kontrolera Zamówienia id stolika, tak aby mu go przypisać, następnie ajax ładuje mi do tworzonego okna index produktów które posiadam.

I tutaj się właśnie zaciąłem. mam już oprogramowane dodawanie produktów, ale nie wiem jak przekazać dane zamówienia do którego muszę to zrobić.

Nie proszę o pomoc w pisaniu kodu, tylko o świeże spojrzenie, bo może być tak, że brnę w swoją myśl ale jednak robię to źle.

Hej,
przede wszystkim radził bym Ci nie używać polskich nazw. Czyli będziesz miał:

  • Table
  • Reservation(table_id, from, to, client_id)
  • Client
  • ProductReservation(reservation_id, product_id, price)
  • Product(name, price)

I tyle. Jeśli jesteś absolutnie początkujący, odradzał bym ajaxa - dodaj go jak bedzie wszystko działało.

Hej,

W prawdzie wszystko jest w angielskim, tutaj napisałem po polsku, aby ułatwić zobrazowanie przykładu.

Absolutnie początkujący to może nie jestem i kilka ajaxowych formularzy już posiadam w środku.

Mam też pytanie, czy jest jakaś zależność między modelami, która w momencie usunięcia nadrzędnego wpisu zmieniała by wartość w kluczu zależnej ?
np. jeśli usunę kategorię to zmienić w produkcie category_id na nil ?

Ustawiasz wtedy w relacji

dependent: :nullify

1 Like

@Bantu dzięki za odpowiedź.

Czy ktoś jest mi w stanie pomóc z pierwszą rzeczą ? ogólnie nie mogę dojść do tego, jak przekazać stworzony obiekt w pierwszym formularzu do następnego… i oczywiście z racji że ma to być bez przeładowania strony to tu jest trudniej.

Może wrzuc swój kod/link do GitHub to będzie łatwiej rozmawiać.

Niekoniecznie o to mi chodzi…

Chodzi mi o pomysł - jak pisałem w pierwszym poście.

Chce sam się z tym uporać, tylko chce skonfrontować kilka różnych sposobów na zrobienie tego.

Obecnie miałem 2 pomysły

  1. Stworzenie i zapisanie nowego zamówienia, wrzucenie id zamówienia do zmiennej w sesji. i podczas ładowania widoku przypisać go do zmiennej
  2. Przesłanie danych zamówienia w parametrach przy przekierowaniu.

A nie możesz zrobić request’a z danymi do aplikacji, w odpowiedzi dostać jsona z obiektem i przekazać go do zmiennej, a dalej js’em otworzyć drugi formularz?

Trochę być może do końca nie kumam o co tutaj chodzi i w czym jest problem. Trochę niejasno to wszystko brzmi, ale gdybym sam robił takie oprogramowanie dla knajpki, to bym na początek zrobił coś w stylu Stolik -> Zamówienie -> Pozycje w menu.

Następnie zrobiłbym tak, że klikam w Stolik, tam otwieram formularz, który mi stworzy nowe zamówienie z pozycji z menu, ale to w przypadku gdy Stolik nie ma otwartego zamówienia. Gdy Stolik ma już otwarte zamówienie po prostu pozwalam edytować zamówienie i tyle w takim dość sporym uproszczeniu.

Nie wiem czym u Ciebie są Obiekt zamówienia, ale traktuje to jak pozycja z menu po prostu.
Żeby stworzyć pozycje w menu to zrobiłbym prosty formularz, w którym na wstępie wybieram Kategorie, np. Dania główne. Potem do tego dodaje nazwę i dopisuję produkty i tyle.

Tak może trochę chaotycznie opisane i może nie o to Ci chodziło, ale napisałem w skrócie jakbym to mniej więcej sobie na początku zaplanował do zrobienia.

Obiekt zamówienia dokładnie to Order_items pozwala mi na przypisywanie produktów do wielu zamówień. Zamiast wielkiej ilości produktów tworze z listy produktów Order_itemy do konkretnego zamówienia

Obecnie robie tak - klikając w solik tworzysz nowe zamówienia i przekierowanie na listę produktów (muszę ogarnąć jak wrzucić to w ajax, aby nie przeładowywać strony) i wtedy dodaje produkty do zamówienia.