Новое:Talanto осенью: поиск с цифрами, вакансия по шагам и каталог компаний

+1 501новая вакансия за сутки·57 707вакансий открыто сейчас·Новое:Talanto осенью: поиск с цифрами, вакансия по шагам и каталог компаний

Новые вакансии в TelegramРаботодателям
Talanto
Вакансии
Компании5 678
РезюмеAIПодготовкаСтатьи
BoostТарифыBoost
Войти

Не нашли подходящее?

Пусть нужная вакансия найдёт вас сама.

  1. Подборка в TelegramНовые вакансии по вашему фильтру — сразу в бота.Подключить
  2. Мэтчи по резюмеЗагрузите резюме — покажем, где вы подходите лучше всего.Загрузить
  3. Сохранить фильтрНастройте поиск один раз и возвращайтесь к новым вакансиям.Настроить
Что нового на TalantoTalanto осенью: поиск с цифрами, вакансия по шагам и каталог компаний

Для работодателей

Опубликуйте вакансию — отклики придут в ваш кабинет.

  1. Вакансиябесплатно
  2. Откликиконтакты бесплатно
  3. Наймэтапы и интервью

40 компаний публикуют вакансии напрямую · 4 400 кандидатов открыты к предложениям

Разместить вакансию

Популярные направления

Все подборки
  • Python11 001
  • Облачные технологии7 882
  • QA вакансии2 530
  • Android1 457
  • Инженер данных929
  • Продакт-менеджер312

Разработка

  • iOS1 361
  • Backend вакансии1 335
  • AI вакансии645
  • Fullstack вакансии521
  • Frontend вакансии460
  • Mobile вакансии28

По стеку

  • Go6 500
  • Java3 643
  • Node.js1 203
  • Kotlin1 161
  • Rust1 155
  • .NET787
  • PHP334
  • C++285
  • C#211

DevOps и инфраструктура

  • Kubernetes4 701
  • Linux-инфраструктура3 588
  • DevOps вакансии3 059
  • Terraform / IaC2 617
  • Мониторинг и Observability1 284
  • CI/CD929
  • SRE345
  • Кибербезопасность28

Аналитика и данные

  • Аналитик данных556
  • Data Scientist443
  • Бизнес-аналитик412
  • Системный аналитик71

Другие направления

  • Проджект-менеджер91
  • UI/UX дизайн72
  • Ручное тестирование14

По регионам

  • Вакансии в США28 307
  • Вакансии в Европе10 602
  • Работа в России3 671
  • Вакансии в Канаде2 400

По формату

  • Удалённые вакансии44 927
  • Релокация в США28 307
  • Гибридная работа6 438
  • Офисная работа5 670

По уровню

  • Senior вакансии25 431
  • Middle вакансии11 844
  • Junior вакансии4 210

Сейчас нанимают

Все компании
  • Wise190 вакансий
  • Rakuten189 вакансий
  • ASML164 вакансии
  • Grab135 вакансий
  • Celonis45 вакансий
  • Spotify36 вакансий
  • Infobip28 вакансий
  • Adyen27 вакансий
  • Monzo19 вакансий
  • Darktrace16 вакансий

Вакансии из 344 источников: карьерные страницы компаний и джоб-борды.

КомпанииО насНовостиПубличная офертаУсловия использованияПолитика конфиденциальностиПоддержка
←К теме Ruby on RailsВсе вопросы
Ruby on RailsMiddleКодинг

Что такое метод serialize в ActiveRecord и когда его следует избегать?

В закладки
Сначала попробуйте ответить сами30 секунд
Сравнить с ответом ↓

serialize сохраняет объект Ruby (Hash, Array) в текстовое поле БД как YAML/JSON. Избегайте его, когда нужна фильтрация, индексация или типобезопасность — используйте jsonb-колонку или отдельную таблицу.

Что это и как работает

serialize позволяет хранить произвольные Ruby-объекты (Hash, Array, custom class) в текстовой или бинарной колонке БД. При чтении ActiveRecord автоматически десериализует значение обратно в Ruby-объект.

# Старый способ (Rails < 7.1) — YAML по умолчанию
class UserProfile < ApplicationRecord
  serialize :preferences, Hash
  serialize :tags, Array
end

# Запись
profile = UserProfile.create(
  preferences: { theme: "dark", notifications: true },
  tags: ["ruby", "rails"]
)

# Чтение — автоматически десериализуется
profile.preferences[:theme]  # => "dark"

serialize в ActiveRecord

Rails 7.1+: store_as и новый API

# Rails 7.1 ввёл typed attributes через attribute API
class EventLog < ApplicationRecord
  serialize :metadata, coder: JSON  # явно JSON вместо YAML
end

# Ещё лучше — store для именованных ключей
class User < ApplicationRecord
  store :settings, accessors: %i[color_scheme locale], coder: JSON
end

user = User.new
user.color_scheme = "dark"
user.locale = "en"
user.settings  # => { "color_scheme" => "dark", "locale" => "en" }

Лучшая альтернатива — PostgreSQL jsonb

# migration
class AddMetadataToProducts < ActiveRecord::Migration[7.1]
  def change
    add_column :products, :metadata, :jsonb, null: false, default: {}
    add_index :products, :metadata, using: :gin
  end
end

# Модель — никакого serialize не нужно
class Product < ApplicationRecord
  # jsonb работает нативно
end

# Запрос по содержимому jsonb
Product.where("metadata @> ?", { category: "electronics" }.to_json)
Product.where("metadata->>? = ?", "color", "red")

Когда serialize допустим

  • Прототипирование или хранение опциональных настроек, по которым никогда не будет фильтрации.
  • Миграция легаси-кода, где нет возможности изменить схему БД.
  • Нереляционные данные с непредсказуемой структурой (логи, события).

Когда избегать serialize

  • Нужна фильтрация по вложенным полям (WHERE preferences->>'theme' = 'dark' не работает на text-колонке).
  • Нужен индекс на поле внутри объекта.
  • Сериализованные данные меняются независимо (нормализуйте в отдельную таблицу).

Подводные камни

  • YAML-сериализация по умолчанию небезопасна для данных из ненадёжных источников — старые версии Rails содержали RCE-уязвимости через YAML.load.
  • Dirty tracking не работает корректно для вложенных мутаций: profile.preferences[:theme] = "light" не помечает preferences как changed — нужно использовать profile.preferences_will_change!.
  • Тип данных проверяется при записи, но не при чтении легаси-данных с неверным типом — десериализация падает молча или возвращает строку.
  • Поиск и сортировка по полю внутри YAML/text-сериализации невозможны без LIKE, что неэффективно и ненадёжно.
  • Миграция между форматами (YAML → JSON) требует ручного rake task для конвертации всех строк.
  • serialize с классом (serialize :data, MyClass) привязывает схему БД к конкретному Ruby-классу — переименование класса ломает десериализацию.
  • Использование store без coder: JSON хранит данные в YAML — проблемы при использовании из других языков или инструментов.
  • jsonb-колонки в PostgreSQL поддерживают GIN-индексы и операторы @>, ? — serialize на text-колонке лишён всех этих возможностей.

Частые вопросы на собеседовании

  • Как Rails обрабатывает защиту от CSRF?
  • Что такое паттерн MVC и как Rails его реализует?
  • Что такое migrations в Rails и как их создавать и запускать?
  • В каких backend-проектах Ruby on Rails является сильным выбором, а где лучше выбрать более простой или другой стек?

Типичные ошибки

  • Сводить serialize method к названию метода без lifecycle и failure path.
  • Игнорировать модель runtime: Rails 8.1 строит приложение вокруг Rack, routing, controllers, Active Record, views и conventions over configuration.
  • Не отделять validation, authorization, transaction boundary и business logic.

Что проверяет интервьюер

  • Объясняет serialize method через конкретную точку lifecycle в Ruby on Rails.
  • Приводит корректный минимальный пример без вымышленных методов или callbacks.
  • Называет edge cases: пустые значения, ошибки, транзакции, безопасность или concurrency.

Как вы знаете этот вопрос?

Проверить себя по теме Ruby on Rails →

Источники

  • https://api.rubyonrails.org/classes/ActiveRecord/AttributeMethods/Serialization/ClassMethods.html
  • https://guides.rubyonrails.org/
←Предыдущий вопросВ чём разница между system tests, integration tests и unit tests в Rails?Следующий вопрос→В чём разница между `scope` и методом класса (class method) в ActiveRecord?

Связанные темы

Ruby on RailsBackend-Engineeringruby-on-rails-ecosystem