Czy klasa formularza może modyfikować bazę danych ?

CZeść,

mam pytanie natury dobrych praktyk, chciałbym uzyskać odpowiedź w której będą zalety i wady stosowania danej metodyki na przykładzie modyfikacji danych w bazie bezpośrednio po odebraniu danych od użytkownika z formularza.

Użytkownik przesyła plik z danymi np. nazwa produktu, opis produktu, kategoria, producent, cechy produktu.

Musicie przed dodaniem sprawdzić, czy dana kategoria, producent istniej w bazie danych oczywiście po nazwie, następnie sprawdzić czy dany produkt już jest w bazie, czyli porównać czy dana nazwa kategorii, nazwa producenta, nazwa produktu są już w relacji i jeżeli są nie dodawać tylko zrobić update, etc…

Kto ma to robić? można w modelu ProductForm obsłużyć powyższe zadania, w sensie używania odpowiednich aktywnych rekordów w ciele metody ProductForm ? czy może nadrzędny aktywny rekord w tym przypadku Product, a może to powinno być w zupełnie odrębnej klasie która będzie miała za zadanie tylko i wyłącznie dodawanie produktów wraz z całą obsługą jego relacji ?

Nie wiem jak inni ale ja staram się aby operacje na bazie były wykonywane w klasie obsługującej bazę (najczęściej dziedziczącej z ActiveRecord).

W formularzach robię zbieranie danych od użytkownika i ich walidację.

Możesz zobaczyć jak zrobione jest to w szablonie advanced z klasami User i LoginForm.