Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

243
Views
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
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!