Rieles buscar por matriz serializada

Estoy tratando de realizar una búsqueda de Rails basada en un campo de texto de matriz serializada (Postgres, si es importante). Asi que:

class Foo < ActiveRecord::Base serialize :arr, Array end 

Entonces:

 > f = Foo.create!(arr: [[1, 2], [3, 4]]) => # > f.arr => [[1, 2], [3, 4]] 

Todo esta bien. Pero parece que no puedo hacer una búsqueda basada en ese campo:

 > Foo.where(arr: [[1, 2], [3, 4]]) => ActiveRecord::StatementInvalid Exception: PG::UndefinedFunction: ERROR: operator does not exist: text = integer "foos"."arr" IN (1, 2, ... ^ HINT: No operator matches the given name and argument type(s). You might need to add explicit type casts. 

Parece que Rails está intentando convertirlo en una consulta IN. No importa, sabemos que Rails se serializa con Yaml (¿o no?). Entonces intentemos:

 > Foo.where(arr: [[1, 2], [3, 4]].to_yaml) => # 

Una inspección más cercana parece llevarme a nuevas líneas como la razón por la que esta búsqueda falla. Podría encontrar una forma de evitar esto con una cláusula LIKE compleja, pero en ese momento creo que probablemente me esté yendo por el camino equivocado.

¿Hay una forma estándar de buscar un modelo en Rails basado en un atributo serializado? (¿Debería simplemente serializar con algo que no sea Yaml?) ¡Muchas gracias!

La solución que estoy usando por ahora (¡definitivamente abierto a otros enfoques!) Es forzar a Rails a serializarse con algo que no sea Yaml, para permitir consultas de cadenas:

 class Foo < ActiveRecord::Base serialize :arr, SerializedArray def self.find_by_arr self.where(arr: SerializedArray.dump(arr)).take end end class SerializedArray def self.load(arr) arr ? JSON.load(arr) : nil end def self.dump(arr) arr ? JSON.dump(arr) : nil end end 

Es una pequeña broma porque tengo que consultar con el custom find_by_arr , pero funciona.

(Editar: se eliminó el código de mal ejemplo.)