activerecord - query - scope rails




¿Cómo excluir una matriz de identificadores de consulta en Rails(usando ActiveRecord)? (2)

Me gustaría realizar una consulta de ActiveRecord que devuelve todos los registros, excepto aquellos registros que tienen ciertos ID. Los identificadores que me gustaría excluir se almacenan en una matriz. Asi que:

ids_to_exclude = [1,2,3]
array_without_excluded_ids = Item. ???

No estoy seguro de cómo completar la segunda línea.

Antecedentes: Lo que ya he probado:

No estoy seguro de que los antecedentes sean necesarios, pero ya he probado varias combinaciones de .find y .where. Por ejemplo:

array_without_excluded_ids = Item.find(:all, :conditions => { "id not IN (?)", ids_to_exclude })
array_without_excluded_ids = Item.where( "items.id not IN ?", ids_to_exclude)

Estos fallan. Este consejo puede estar en el camino correcto, pero no he logrado adaptarlo. Cualquier ayuda sería muy apreciada.


Esto debería funcionar:

ids_to_exclude = [1,2,3]
items_table = Arel::Table.new(:items)

array_without_excluded_ids = Item.where(items_table[:id].not_in ids_to_exclude)

Y está totalmente orientado a objetos sin cadenas :-)


Solución Rails 4:

ids_to_exclude = [1,2,3]
array_without_excluded_ids = Item.where.not(id: ids_to_exclude)






active-relation