activerecord
-
Хабрахабр
GraphQL без N+1 это легко благодаря N1Loader
N1Loader разработан для легкого избежания N+1 проблемылюбого типа. К счатью, гем очень легко интегрировать в GraphQLAPI. Без дальнейших отлагательств, давайте рассмотрим простой, но самодостаточный пример. # Добавляем N1Loader с интеграцией ArLazyPreload require "n1_loader/ar_lazy_preload"require 'graphql' # Создаем SQLite таблицы в памяти, не относится к библиотеке.require_relative 'context/setup_database'# ArLazyPreload требует Rails приложение. Этот код необходим, чтобы избежать этого.require_relative 'context/setup_ar_lazy' class User < ActiveRecord::Base…
Читать далее » -
Хабрахабр
N+1 больше не будет проблемой
Каждый разработчик рано или поздно сталкивается с проблемой N+1. ActiveRecord (Rails default ORM) поддерживает подгрузку ассоциаций с помощью includes для обхода N+1. К сожалению, зачастую, не все данные, что нам нужны можно задекларировать в виде стандартных ассоциаций. Рассмотрим несколько примеров. Пример 1. Количество заказов у пользователя Предположим у нас есть модели: class User < ActiveRecord::Base has_many :ordersend class Order <…
Читать далее » -
Хабрахабр
[Из песочницы] За что я ненавижу Eloquent ORM
Хочу перед вами исповедаться и рассказать немного о том, что я чувствую, когда разрабатываю на Laravel. Всем привет. Нет, не подумайте, я обожаю этот фреймворк и безумно благодарен команде, которая его создала и поддерживает, они делают крайне крутое дело и, на мой взгляд, Laravel является лучшим продолжением не менее горячо любимого мною Symfony. Тупой в том смысле, что даже через…
Читать далее » -
Хабрахабр
Как прокачать belongs_to чтобы работал в два раза быстрее (database_validations gem)
В данной статье, я покажу почему нужно использовать db_belongs_to из database_validations гема вместо привычного нам belongs_to. Но знаете ли вы, что инициализация связи с помощь belongs_to в вашей модели также добавляет валидацию на существование связи. Я уверен, что большинство из вас знакомо с belongs_to из ORM ActiveRecord. Это происходит потому, что belongs_to имеет опцию optional: false по умолчанию. Таким образом,…
Читать далее »