Вот как работает Rails, классический пример:
Вы видите простую строку кода, и вы можете сразу сказать(если вы знаете, является ли User моделью ActiveRecord), что она делает. Проблема здесь заключается в том, что люди путают простоту с удобством. Эту строку удобно/легко написать в вашем контролере и всё сразу заработает, не так ли?
Однако, эта строка кода не является простой, её легко написать, но код "под капотом" чрезвычайно сложен, так как:
- params должны пройти через СУБД-специфические приведения типов
- params должны быть валидированы
- params могут быть изменены с помощью колбеков, включая потенциальные вызовы внешних систем, вызывающие побочные эффекты
- невалидное состояние приводит к установке сообщений об ошибках, которые зависят от внешних систем (например I18n)
- валидные params должны повлиять на состояние объекта, и возможно изменить состояние ассоциированных с ним объектов
- один объект или весь граф объекта должен быть сохранен в базе данных