我在這個紅寶石SQL查詢,以更新的Postgres的hstore列如何使用ruby在postgres中對hstore列執行復雜更新?
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"])
而是使用'data'變量中的值。
你爲什麼要使用hstore這個?看起來像一個單獨的表格將是合適的,可能更容易處理。 –
這是數據庫模型的一般化。例如,我們有其他hstore列存儲照片的元數據。 – mightochondria