PostgreSQL
 sql >> Base de Dados >  >> RDS >> PostgreSQL

Rails pesquisam por array serializado


A solução que estou usando por enquanto (definitivamente aberta a outras abordagens!) é forçar o Rails a serializar com algo diferente do Yaml, para permitir consultas de string:
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

É um pouco estranho que eu tenha que consultar com o find_by_arr personalizado , mas funciona.

(Edit:código de exemplo ruim removido.)