Разбор:- Фрагмент показывает конкретный сценарий, который стартует со строки `Scope всегда *ленив*: не выполняет запрос, возвращает Relation.` и задаёт контекст выполнения.- Ключевые элементы блока: `scope`, они определяют основную логику примера.- По шагам код выполняется так: `Scope всегда *ленив*: не выполняет запрос, возвращает Relation.` -> `Правило: scope не должен вызывать `all`, `to_a`, `first` — это наруш` -> `---` -> `#### Enum`.- Практически важно добавить обработку ошибок и явные проверки входа, чтобы исключить скрытые падения в рантайме.- Типичная ошибка при развитии такого кода — смешивать бизнес-правила и инфраструктурные детали в одном месте; лучше разделять ответственность.class User < ActiveRecord::Base enum status: { draft: 0, active: 1, archived: 2 }enduser = User.new(status: :active)user.active? # → trueuser.status = 'archived'
Разбор:- Фрагмент показывает конкретный сценарий, который стартует со строки `Scope всегда *ленив*: не выполняет запрос, возвращает Relation.` и задаёт контекст выполнения.- Ключевые элементы блока: `scope`, они определяют основную логику примера.- По шагам код выполняется так: `Scope всегда *ленив*: не выполняет запрос, возвращает Relation.` -> `Правило: scope не должен вызывать `all`, `to_a`, `first` — это наруш` -> `---` -> `#### Enum`.- Практически важно добавить обработку ошибок и явные проверки входа, чтобы исключить скрытые падения в рантайме.- Типичная ошибка при развитии такого кода — смешивать бизнес-правила и инфраструктурные детали в одном месте; лучше разделять ответственность.class User < ActiveRecord::Base enum status: { draft: 0, active: 1, archived: 2 }enduser = User.new(status: :active)user.active? # → trueuser.status = 'archived'