Login Sign Up
Advert
Your ad spot
Reserve this exclusive slot for the selected period.
Buy advertising →
Telegram community logo - Codica - корисне про IT
Added 14 Jul 2024 🌐 UK

Codica - корисне про IT

@codica
Number of subscribers: 2 090
Photos: 3,300
Videos: 171
Links: 1,700
Description:
Привіт, друже, це канал про корисності в ІТ🤘 🔺Даємо практичні матеріали з RoR, JavaScript, QA, DevOps 🔺Розкажемо як знайти першу роботу без хвилювань та проблем ✍️Для звʼязку-@klimenko_nataly 👉 Відкриті вакансії - www.codica.com/careers
Source

Codica - корисне про IT | Fat model / Fat controller: коли клас росте швидше за проєктЯкщо у вас...

Telegram community logo - Codica - корисне про IT Codica - корисне про IT @codica
224 Views/Reach 2026-06-19 09:04 Message №4673
Fat model / Fat controller: коли клас росте швидше за проєкт

Якщо у вас є модель на 1200+ рядків або контролер, який “трошки робить усе” — цей пост для вас 🙂

У Rails легко почати красиво. Але з часом у модель додається:• бізнес-логіка• інтеграції• callback-и• валідації• формування JSON• умовні переходи станівІ раптом один клас починає вирішувати пів проєкту. Ми всі через це проходили 🙂👉 У чому проблема🔹 Код важко читати🔹 Логіка розмазана🔹 Тести стають складними🔹 Будь-яка зміна ламає щось несподівано🔹 Новому розробнику потрібно пів дня, щоб зрозуміти “що тут відбувається”Модель перетворюється на “божественний об’єкт”.

👉 Чому це трапляється саме в Rails

Rails заохочує логіку в моделях. І на початку це правильно. Але:ActiveRecord ≠ місце для всієї бізнес-логіки. Модель відповідає за дані. А не за весь життєвий цикл домену. Як зрозуміти, що вже “fat”• файл важко прогорнути• методи не пов’язані між собою• з’явились 5+ callback-ів• модель знає про зовнішні API• ви боїтесь її чіпати👉 Що робити замість цього1️⃣ Service objectsВиносимо бізнес-логіку:ruby class CreateOrder def call(params) ... endend
2️⃣ Query objectsСкладні запити — не в модель.3️⃣ Form objectsОсобливо для складних форм і multi-step flows.4️⃣ PORO (Plain Old Ruby Object)Не все повинно бути ActiveRecord.

👉 Маленьке правило

Якщо метод не працює з полями моделі напряму — можливо, він не повинен бути в ній. Який найбільший файл моделі ви бачили? І скільки там було рядків?

😄

TikTok | Instagram | Telegram