PostgreSQL
 sql >> Database >  >> RDS >> PostgreSQL

Le rotaie cercano in base all'array serializzato

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.)