Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

237
Vistas
La unión externa izquierda de Rails 5 con condiciones where () excluye filas de la tabla izquierda

Tengo una tabla de calificadores que almacena varios términos utilizados para calificar películas. Algunos de ellos tienen un tipo :tag o :pool y pueden estar :active o no. Se atribuyen a las películas a través de una tabla de relaciones Movietags, relativa a una edición, que cambia cada año.

 class Qualifier < ApplicationRecord has_many :movies has_many :qualifiers, through: :movietags has_many :movietags, inverse_of: :qualifier, dependent: :destroy ... end class Movietag < ApplicationRecord belongs_to :edition belongs_to :movie belongs_to :qualifier end

Mi objetivo es obtener todas las etiquetas activas (de ahí los dos alcances) junto con sus etiquetas de película de cualquier edición dada (y solo esas). Esta consulta funciona y realiza una UNIÓN EXTERNA IZQUIERDA, pero excluye los calificadores con etiquetas de película que no se usan en la edición dada:

 @qualifiers = Qualifier.all_tags.active .includes(:movietags) .where('movietags.edition_id = ? OR movietags.edition_id IS NULL', @edition_id) .references(:movietags)
 -- irrelevant parts removed for legibility SELECT "qualifiers"."id" AS t0_r0, "qualifiers"."kind" AS t0_r1, "qualifiers"."active" AS t0_r2, "movietags"."id" AS t1_r0, "movietags"."edition_id" AS t1_r1, "movietags"."movie_id" AS t1_r2, "movietags"."qualifier_id" AS t1_r3 FROM "qualifiers" LEFT OUTER JOIN "movietags" ON "movietags"."qualifier_id" = "qualifiers"."id" WHERE "qualifiers"."kind" IN ('tag', 'pool') AND "qualifiers"."active" = $1 AND (movietags.edition_id = 5 OR movietags.edition_id IS NULL) [["active", "t"]]

¿Cómo puedo obtener todas las etiquetas activas?

Estoy buscando una solución Rails pura, soy consciente de que las consultas SQL directas pueden lograr esto (ver comentarios, gracias @philipxy).

over 4 years ago · Santiago Trujillo
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda