Rozwiązaniem, którego na razie używam (zdecydowanie otwarte na inne podejścia!) jest zmuszenie Railsów do serializacji z czymś innym niż Yaml, aby umożliwić zapytania łańcuchowe:
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
To trochę dziwne, ponieważ muszę wysyłać zapytania za pomocą niestandardowego find_by_arr
, ale to działa.
(Edycja:usunięto zły przykładowy kod.)