Tengo un ámbito de Rails 3 que excluye una matriz de identificadores.Raíles con alcance que no hace nada para los valores NOT IN
¿Cuál es la mejor manera de escribir el osciloscopio para que no haga nada cuando la matriz está vacía y todavía puede encadenarse? En este momento tengo presente, que funciona, pero parece un poco mal:
scope :excluding_ids,
lambda {|ids| ids.empty? ? relation : where('id not in (?)', ids) }
Si no tengo el "ids.empty relación:??" bits, cuando IDS es vacía el SQL generado es
... ID not in (NULL) ...
que siempre devolverá nada. Así que algo como:
Model.excluding_ids([]).where('id > 0')
devuelve ningún resultado.
de qué. –
Gracias por la edición. (eliminado mi comentario anterior que tenía un error ya que no puedo editarlo ahora) – tee
¡Ah, mucho mejor! Le doy a tu respuesta un unicornio. –