У меня есть этот sql-запрос в ruby для обновления столбца hstore в postgres.
query = %Q{UPDATE accounts SET favorites =
hstore(ARRAY['favorite_book', user.book, 'favorite_movie', user.movie])
FROM (VALUES #{data} ) AS user(id_str, favorite_book, favorite_movie)
WHERE accounts.original_id_str = user.id_str;}
где данные - это строка, которая выглядит так
data = "('3082633', 'FavoriteBook1', 'FavoriteMovie1'),('1768517', 'FavoriteBook2', 'FavoriteMovie2'),('8245997', 'FavoriteBook3', 'FavoriteMovie3')"
Прямо сейчас я обновляю таблицу базы данных, вызывая
Account.connection.execute(query)
Но есть ли способ преобразовать как можно больше запросов в ruby вместо sql? Например, что-то вроде
add_to_hstore = %(favorites = hstore(?, ?))
Account.update_all([add_to_hstore, "favorite_book", "LOTR"])
но вместо этого используйте значения из переменной «данные».