Cuando tengo una variedad de identificadores, como
ids = [2,3,5]
y realizo
Comment.find(ids)
Todo funciona bien. Pero cuando hay una identificación que no existe, obtengo una excepción. Esto ocurre generalmente cuando obtengo una lista de ID que coinciden con algún filtro y luego hago algo como
current_user.comments.find(ids)
Esta vez puedo tener una ID de comentario válida, que sin embargo no pertenece a un Usuario dado, por lo que no se encuentra y obtengo una excepción.
Lo he intentado find(:all, ids)
, pero devuelve todos los registros.
La única forma en que puedo hacerlo ahora es
current_user.comments.select { |c| ids.include?(c.id) }
Pero eso me parece una solución súper ineficiente.
¿Hay una mejor manera de seleccionar ID en la matriz sin obtener una excepción en el registro no existente?
fuente
Array
lugar de unActiveRecord::Relation
, lo que limita lo que puede hacer con él después.Comment.where(id: [2, 3, 5])
devuelve unActiveRecord::Relation
.