Прошу прощения за свое отсутствие, и на это есть вполне веская причина — у меня есть котенок, как и положено каждому разработчику (нет, они действительно мешают). Извините, я здесь не для этого. Приступим к следующей части Рефакторинг Rails по-чистому.

Сегодня мы рассмотрим, почему и как создаются объекты формы, и как вы можете избежать «accepts_nested_attributes_for» ваших моделей и изолировать логику для работы с вашей формой.

БОНУС: это также очищает ваши контроллеры

Ранее мы говорили об использовании меньших обратных вызовов и о том, чтобы быть явными в ваших моделях. Объекты формы идут немного дальше и уменьшают раздувание модели, изолируя действия для своего собственного объекта.

Анатомия объекта формы

На самом деле я написал статью, подробно рассказывающую о том, как работает код, но посчитал ее слишком длинной, поэтому ее не опубликовали, но для ясности статья она — будьте осторожны, она довольно длинная.

Мне нравится добавлять суффикс Form в объект формы просто для ясности, но это необязательно, некоторые разработчики просто используют такие имена, как Signup, и это нормально.

Вы можете уменьшить крошечный шаблонный код, используя BaseForm и наследуя его для каждой формы. Таким образом, вам не нужно повторяться с включениями ActiveModels.

Затем вы можете вызвать ProfileForm в своем контроллере, и вы можете сделать их компактными и чистыми. 🍰

Я понимаю, что это руководство довольно пустое, и я не собирался помещать все в код. Напоминаю вам, что я на самом деле написал одно некоторое время назад, которое идет немного глубже, так что если вы хотите копнуть глубже. [Анатомия объекта формы]

Теперь вы можете написать свой собственный объект формы и спасти мир, супер! 🦸‍♀️