Probelm koncepcyjny

Witam.

Mam model i kontroler Development. W development mam pole document. I chce te dokumenty aktywować dla konkretnych użytkowników serwisu. Czy lepiej dodać kolejną metodę do development i mieć adres development/1/request (wole to rozwiązanie) czy zrobić odrębny model i robic request/development/2. Ogólnie muszę gdzieś trzymać te żądania opracowania więc pewnie nie obejdzie się bez modelu request.

Czy dobrym rozwiązaniem jest dodanie danych do modelu request z modelu/kontrolera development?

Pozdrawiam
Sebastian

Zamieszałeś ale mi to wygląda na standardowy układ “Development has_many :requests”.

Ścieżki układasz tak:

map.resources :developments do |development| development.resources :requests end
URLe masz wtedy postaci /developments/4/requests/1231.

Akcja “żądania” będzie wtedy po prostu utworzeniem nowego rekordu Request (RequestsController#create) przypisanego do konkretnego Developmentu.

Do modeli Development i Request dodajesz has_many i belongs_to, odpowiednio. I wtedy nie potrzebujesz danych z Development przenosić do Request.

A jak z kontrolera Development utworzyć rekord w modelu Request.

link będzie w postaci /developments/3/request/new

3 -> development_id
user_id -> session[:current_user]
accepted -> nil
expire -> nil

Zakładam model request:
development_id, user_id, accepted, expire

Pozdrawiam

Nie będziesz go tworzyć w DevelopmentsController tylko RequestsController.
Link postaci /developments/3/requests/new obsługuje akcja RequestsController#new (tutaj powinien być formularz tworzenia nowego żądania).
Najbardziej Cię interesuje ścieżka “POST /developments/:development_id/requests” i akcja RequestsController#create.

Masz w niej wtedy dostęp do:
params[:development_id] => 3
…i wszystkich innych parametrów jakie były w formularzu w akcji new.

Poczytaj koniecznie o RESTful designie i routes w Rails.
Po to mamy Rails żeby się nad takimi rzeczami nie zastanawiać.