Спасибо за ваше время:Hstore PostgreSQL Массив Comparision любой в массиве, Rails 3
У меня есть группа записей (пользователи конкретны) с хэш Hstore сохраненным в поле «данных». Дело в том, что я хочу сделать один SQL для извлечения пользователей из этой группы пользователей с сохраненным свойством hash hstore в этом поле данных, соответствующих другому массиву значений строк:
данные: {"foo" = > "", "бар" => "бары", "Баз" => "Базз"}
массив строк, чтобы соответствовать [ "FOOS", "Базз"]
ПРИМЕЧАНИЕ: Я хочу, чтобы соответствовать значения, НЕ ключи
У каждого пользователя есть набор свойств «данных» foo/bar/bas, и я посылаю массив «ключей» из хэша для извлечения и сравнения со вторым массивом «значения», но Кажется, я не могу одно соответствие SQL. До сих пор все это у меня есть:
keys = ["foo", "baz"]
values_to_match = ["bars", "bazz"]
users.where("users.data -> ARRAY[?] ILIKE ANY (ARRAY[?])", keys, values_to_match)
Я Попробуем попробовать, но не существует ли более SQL, как элегантное решение, которое не включает итерацию ruby? это больше похоже на улучшение, потому что исходный запрос выполняет итерацию над пользовательским массивом и делает SQL-запрос для каждого пользователя, что очень неэффективно, и сложность SQL-запросов не очень изящна или понятна, я думаю, я попробую это так или иначе, это дает мне какое-то направление thanx –