Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

234
Visualizações
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 à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda