paint-brush
Diferencias entre inclusiones y uniones en Ruby on Railspor@ashubhosale
19,036 lecturas
19,036 lecturas

Diferencias entre inclusiones y uniones en Ruby on Rails

por ashubhosale2m2021/06/07
Read on Terminal Reader
Read this story w/o Javascript

Demasiado Largo; Para Leer

Muchos de nosotros sabemos acerca de las inclusiones, las uniones, pero a veces nos confundimos acerca de su uso. Mientras experimentaba con la refactorización de código en uno de mis proyectos, allí probé estas cosas. Como sabemos, include y join se usan cuando realizamos operaciones en tablas asociadas. Ambos se utilizan para el mismo propósito. Cuando queremos obtener datos junto con una tabla asociada, se deben usar las inclusiones. Uniones: utiliza la carga diferida. Incluye: Usos ansiosos de carga, Cuando. Podemos usar uniones cuando we. desea considerar los datos como una condición de la tabla unida.

Company Mentioned

Mention Thumbnail
featured image - Diferencias entre inclusiones y uniones en Ruby on Rails
ashubhosale HackerNoon profile picture

Muchos de nosotros sabemos acerca de las inclusiones, las uniones, pero a veces nos confundimos acerca de su uso. Mientras experimentaba con la refactorización de código en uno de mis proyectos, allí probé estas cosas. Así que pensé que podía compartir estos hallazgos con ustedes.

Como sabemos, include y join se usan cuando realizamos operaciones en tablas asociadas. Ambos se utilizan para el mismo propósito.

Incluye : utiliza carga ansiosa. Cuando queremos obtener datos junto con una tabla asociada, se debe usar incluye.

Uniones: utiliza carga diferida. Podemos usar uniones cuando queremos considerar los datos como una condición de la tabla unida pero sin usar ningún atributo de la tabla.

Te mostraré un ejemplo en el que se prefiere incluir en lugar de unir, ¡también he comparado ambas consultas para que puedas ver cuál es más rápida!

 class Item < ApplicationRecord belongs_to : user end class User < ApplicationRecord has_many : items , dependent : : destroy end

Ahora quiero mostrar el título del elemento con el nombre del usuario.

El uso de include será el resultado de la consulta,

 puts Benchmark.measure { items = Item.includes(:user) items.each do |item| item.title item.user.first_name end }

El uso de resultados de consulta de combinaciones será,

 puts Benchmark.measure { items = Item.joins(:user) items.each do |item| item.title item.user.first_name end }

Por lo tanto, se explica por sí mismo, se prefiere incluir. Pero si queremos tener elementos donde user_id: 1, y no estamos mostrando ningún dato de la tabla de Usuario, entonces solo use uniones, porque esto no cargará los datos de ningún usuario hasta que queramos (carga diferida). Como se indica a continuación.

 items = Item.joins(:user).where(user_id: 1 ) items.each do |item| item.title end

A continuación se muestran algunos enlaces de referencia. Puedes verlos para tu comprensión:

http://railscasts.com/episodes/181-include-vs-joins?autoplay=true