Jaki kontroler powinien obsługiwać formularz dla kilku obiektów?

Cześć,

Mam taki model:

Vulnerability             - podatność
  has_many :occurrences   - wystąpienie
  has_one :translation    - tłumaczenie
  has_one :merge_rule     - reguła scalania

I mam też formularz, przy pomocy którego użytkownik powinien móc podać tłumaczenie podatności oraz ustalić zasady mergowania powtarzających się wystąpień tej podatności. Aplikacja nie ma funkcji manualnego tworzenia/edytowania samej podatności, a tylko powiązanych z nią obiektów.

Formularz to simple_form_for @vulnerability, a inputy są zagnieżdżone w simple_fields_for @merge_rule i @translation.

Zastanawiam się, czy - skoro nie edytuję w żaden sposób podatności - prawidłowym będzie wysyłanie formularza do VulnerabilitiesControllera i zapisywanie tam podatności razem z dowiązanymi do niej obiektami, bo zasadniczo nie edytuję/nie tworzę tam samej podatności, a dwie instancje zupełnie innych klas.
Jeżeli nie to kontrolera podatności, to powiedzcie proszę dokąd, bo nie jestem pewien jakie podejście jest najbardziej standardowe.

Dziękuję za uwagę :slight_smile:

A gdybyś pomyślał o zasobie innym niż bezpośrednio model AR? Wyobraź sobie klasę (zasób) VulnerabilityLogic, która nie jest modelem AR a “zaledwie” FormObjectem. Obsługującym logikę zbierania i zapisywania translation oraz merge_rule konkretnej vulnerability. Przy okazji (jak już robisz FormObject) pozbywasz się fields_for.

Jeśli chodzi o FormObject, polecam na początek railscast#416 oraz 7 ways to decompose fat activerecord models. Uwaga, w Rails4 łatwiej się robi FormObject :slight_smile:

3 Likes