PostgreSQL
 sql >> Datenbank >  >> RDS >> PostgreSQL

Rails suchen nach serialisiertem Array

Die Lösung, die ich jetzt verwende (definitiv offen für andere Ansätze!), besteht darin, Rails zu zwingen, mit etwas anderem als Yaml zu serialisieren, um Zeichenfolgenabfragen zu ermöglichen:

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 ist ein bisschen ruckelig, dass ich mit dem benutzerdefinierten find_by_arr abfragen muss , aber es funktioniert.

(Bearbeiten:schlechten Beispielcode entfernt.)