Hstore 不会在 rails 中更新其值

Hstore doesn't update its values in rails

我对 postgres hstore 有疑问。我在 Rails 4.2 之前发现了这一点。您需要使用此代码来保存 hstore:

var_will_change!
var[:foo] = 'boo'
var.save!

这个问题在这里https://github.com/rails/rails/issues/6127

在新 rails 中,hstore 没有这样的问题。即使您查看 rails 指南 http://edgeguides.rubyonrails.org/active_record_postgresql.html#hstore。只有 var.save!。而且我不明白为什么它不适用于我的代码。我正在使用 rails 4.2.1。这是我的代码:

def update
    album = Album.find(params[:id])

    users = User.where(email: params[:album][:emails])
    album.members.merge!(Hash[users.pluck(:id).zip params[:album][:roles]])

    album.save!

    render json: Hash[users.pluck(:name).zip params[:album][:roles]]
  end

在此代码中,album.members 是需要修复的 hstore。

哦,也许可以用更简单的方式升级此代码。如果您有这些建议,我很乐意听取。
谢谢回答。

编辑: 发现更具体的错误,当相册尝试保存时出现此错误 8991 segmentation fault (core dumped) rails s

好吧,如果有人遇到这样的麻烦,我设法解决了这个问题。这就像地球 Ruby 上的童话故事之一,其中 parents 告诉他们的孩子故事的寓意:“孩子们不要忘记尽可能使用括号,只是为了确保您的代码是正确的'。

问题正如您在括号中注意到的那样,我想它以其他方式解释了该方法,而不是 needed.It 的工作方式:

album.roles.merge!(Hash[users.pluck(:id).zip(params[:album][:roles])])