PostgreSQL
 sql >> Base de données >  >> RDS >> PostgreSQL

Recherche de rails par tableau sérialisé

La solution que j'utilise pour l'instant (certainement ouverte à d'autres approches !) Est de forcer Rails à sérialiser avec autre chose que Yaml, pour permettre les requêtes de chaînes :

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

C'est un peu bizarre dans la mesure où je dois interroger avec le find_by_arr personnalisé , mais ça marche.

(Edit :suppression du mauvais exemple de code.)