Код IT
← Каталог

Работа с базами данных из Ruby — Enum

Фрагмент из «Работа с базами данных из Ruby»: Enum.

Ruby main.rb

Разбор:
- Фрагмент показывает конкретный сценарий, который стартует со строки `Scope всегда *ленив*: не выполняет запрос, возвращает Relation.` и задаёт контекст выполнения.
- Ключевые элементы блока: `scope`, они определяют основную логику примера.
- По шагам код выполняется так: `Scope всегда *ленив*: не выполняет запрос, возвращает Relation.` -> `Правило: scope не должен вызывать `all`, `to_a`, `first` — это наруш` -> `---` -> `#### Enum`.
- Практически важно добавить обработку ошибок и явные проверки входа, чтобы исключить скрытые падения в рантайме.
- Типичная ошибка при развитии такого кода — смешивать бизнес-правила и инфраструктурные детали в одном месте; лучше разделять ответственность.

class User < ActiveRecord::Base
  enum status: { draft: 0, active: 1, archived: 2 }
end

user = User.new(status: :active)
user.active? # → true
user.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 }
end

user = User.new(status: :active)
user.active? # → true
user.status = 'archived'