Решението, което използвам за сега (определено отворено за други подходи!) е да принудя Rails да сериализира с нещо различно от Yaml, за да позволи заявки за низове:
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
Малко е неприятно, че трябва да правя заявки с персонализирания find_by_arr
, но работи.
(Редактиране:премахнат лош примерен код.)