
Розширені запити ActiveRecord
Query interface, where, joins, includes, eager loading, проблема N+1, transactions, locking (optimistic/pessimistic)
1Який метод ActiveRecord отримує запис за його первинним ключем і викликає виняток, якщо запис не знайдено?
Який метод ActiveRecord отримує запис за його первинним ключем і викликає виняток, якщо запис не знайдено?
Відповідь
Метод find отримує запис за його первинним ключем і викликає виняток ActiveRecord::RecordNotFound, якщо запис не існує. Це гарантує, що код завершиться помилкою явно, а не продовжить роботу зі значенням nil. Щоб уникнути винятку й натомість повернути nil, використовуйте find_by(id: value).
2Яка основна різниця між find_by та where.first в ActiveRecord?
Яка основна різниця між find_by та where.first в ActiveRecord?
Відповідь
find_by безпосередньо повертає один запис або nil, тоді як where.first повертає relation ActiveRecord, а потім викликає first, щоб отримати перший результат. На практиці find_by генерує оптимізований запит з LIMIT 1, тоді як where може потенційно завантажити більше даних, перш ніж вибрати перший елемент.
3Як передати кілька умов методу where в ActiveRecord?
Як передати кілька умов методу where в ActiveRecord?
Відповідь
Метод where приймає хеш з кількома ключами для вказання кількох умов, які будуть об'єднані за допомогою AND. Наприклад, User.where(status: 'active', role: 'admin') генерує WHERE status = 'active' AND role = 'admin'. Для умов OR використовуйте or або сирі SQL-запити.
Що таке проблема N+1 в ActiveRecord?
Який метод використати для вирішення проблеми N+1 шляхом попереднього завантаження асоціацій?
+25 питань зі співбесід
Інші теми співбесід Ruby on Rails
Основи Ruby
Об'єктно-орієнтоване програмування в Ruby
Основи Rails
Routing & Controllers
Основи ActiveRecord
Views та шаблони ERB
Асоціації ActiveRecord
Форми Rails
Автентифікація та авторизація
Сучасний Asset Pipeline та frontend
Режим API Rails
Тестування з RSpec
ActiveJob & Background Jobs
ActionCable & WebSockets
ActionMailer
ActiveStorage
Стратегії кешування
Розширені міграції
Rails Engines та модульні застосунки
Оптимізація продуктивності
Патерни проєктування Rails
Метапрограмування в Ruby
Безпека Rails
GraphQL із Rails
Розгортання та Продакшн
Monitoring & Logging
Стратегії оновлення Rails
Опануй Ruby on Rails для наступної співбесіди
Отримай доступ до всіх питань, flashcards, технічних тестів, вправ code review та симуляторів співбесід.
Почни безкоштовно