La soluzione che sto usando per ora (decisamente aperta ad altri approcci!) È forzare Rails a serializzare con qualcosa di diverso da Yaml, per consentire query di stringhe:
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
È un po' strano che devo interrogare con il find_by_arr
personalizzato , ma funziona.
(Modifica:rimosso codice di esempio errato.)