Use of projection dsl is not available in Relation#exclude
Nadie ha tomado este issue todavía.
Evaluación
- Dificultad
- 3/5
- Tiempo estimado
- 1-2 días
- Aptitud para principiantes
- 42/100
Línea de trabajo
Start at Relation#exclude and the projection DSL shown in the reproduction, then reproduce the query to trace where the block is evaluated. Add coverage for the expected NOT (1 = ANY(...)) SQL and confirm the projection and existing conditions remain unchanged.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
Describe the bug
It I try to use the projection dsl in combination with #exlude...
mentions
.select { integer::count(issue_id).as(:unit_mention_count) }
.where(unit_id: 3, read: false)
.exclude { user_ids.any(1) }
...I get the following error:
NoMethodError:
undefined method `any' for #<Sequel::SQL::Identifier @value=>:user_ids>
.exclude { user_ids.any(1) }
Expected behavior
SELECT COUNT(\"mentions\".\"issue_id\") AS \"unit_mention_count\" FROM \"mentions\" WHERE ((\"unit_id\" = 3) AND (\"read\" IS FALSE) AND NOT (1 = ANY(\"mentions\".\"user_ids\")))
Workaround
Overwrite #exclude at relation
class Mentions < ROM::Relation[:sql]
schema(:mentions, infer: true) do
end
def exclude(*args, &block)
if block
exclude(*args).exclude(schema.canonical.restriction(&block))
elsif args.size == 1 && args[0].is_a?(Hash)
new(dataset.exclude(coerce_conditions(args[0])))
elsif !args.empty?
new(dataset.exclude(*args))
else
self
end
end
end
WDYT? I could provide a PR.
- Lenguaje dominante
- Ruby
- Estrellas
- 220
- Forks
- 97
- Métricas de merge de PR
- Sin PR fusionados en 30 d
Preparar el entorno
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Más de rom-rb/rom-sql
-
bug help wanted
Dificultad 4/5 3-5 días Aptitud para principiantes 42/100
-
bug help wanted
Dificultad 3/5 1-2 días Aptitud para principiantes 48/100
-
Relation#last removes combinesAbiertobug help wanted
Dificultad 3/5 1-2 días Aptitud para principiantes 42/100
-
bug help wanted
Dificultad 4/5 3-5 días Aptitud para principiantes 42/100
-
bug help wanted
Dificultad 3/5 1-2 días Aptitud para principiantes 45/100
Todos los issues de rom-rb/rom-sql
Issues similares
-
Widget de foto do aluno duplica os controles quando o mesmo aluno está aberto em duas ediçõesAbierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 72/100
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 74/100
we-promise/sure#4481 ·
Los mantenedores suelen responder en 1 día
-
data error
Dificultad 2/5 1-3 horas Aptitud para principiantes 62/100
riscv/riscv-unified-db#2772 ·
Los mantenedores suelen responder en 1 día
-
`judges test --disable=slow,fast` disables nothing and `--enable=slow,fast` skips every test, because the comma is not a separator of categoriesPosiblemente ocupada Un pull request vinculado a esta issue está abierto o ya se fusionó. Abierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 78/100
Los mantenedores suelen responder en 8 días
-
unsupported shell: "l"Abierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 65/100