sql >> Databáze >  >> RDS >> PostgreSQL

Rails vyhledávají podle serializovaného pole

Řešení, které nyní používám (rozhodně otevřené jiným přístupům!), je donutit Rails serializovat s něčím jiným než Yaml, aby bylo možné provádět řetězcové dotazy:

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

Je to trochu nervózní v tom, že musím dotazovat pomocí vlastního find_by_arr , ale funguje to.

(Upravit:odstraněn špatný příklad kódu.)




  1. Mohu si být jistý posledním ID vložení Mysql?

  2. Odstranění duplicitních řádků v databázi MySQL

  3. ORA-30076:neplatné pole extraktu pro zdroj extraktu

  4. Snažíte se získat výsledek v jednom řádku pomocí sql?