ruby - 如何使用 ruby​​ 对 postgres 中的 hstore 列执行复杂更新?

标签 ruby postgresql activerecord ruby-on-rails-4 hstore

我在 ruby​​ 中有这个 sql 查询来更新 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"])

而是使用“数据”变量中的值。

最佳答案

有像这样的 hstore gem :https://github.com/diogob/activerecord-postgres-hstore

或者您通过创建自己的帐户对象来使用简单的更新: http://apidock.com/rails/ActiveRecord/Relation/new

关于ruby - 如何使用 ruby​​ 对 postgres 中的 hstore 列执行复杂更新?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22641369/

相关文章:

ruby-on-rails - rails : wrong number of arguments (1 for 0) for . 新

sql - rails - 我不应该在 rails 迁移中使用默认值吗

带有 IN 的 Postgresql ALL

ruby-on-rails - Rails 3 ActiveRecord 事务

ruby - 打印文件中出现次数最多的 n 个单词(字符串)

ruby - 使用 Ruby 填写 PDF 表单

java - 如何在 native 查询中动态传递限制和偏移值

ruby-on-rails - has_many和:after_add/:before_add => callback for << and create methods

php - 有没有办法使 Yii2 查询缓存记录无效/变脏?

ruby-on-rails - Ruby - 如何在 gemfile 上使用 bundler 来创建环境?