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])])
我对 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])])