Ruby on rails 有没有一种方法可以一次性合并Rails中jsonb列中的数据?

Ruby on rails 有没有一种方法可以一次性合并Rails中jsonb列中的数据?,ruby-on-rails,jsonb,Ruby On Rails,Jsonb,我在一个名为email_preferences的表中有一个字段,带有一些默认值。现在我必须向这个对象添加一个自定义字段 一种方法是检查所有记录并手动更新每个记录,如下所示:- User.find_每个do|用户| user.email_首选项['九月电子邮件']=true user.save 结束 如果有很多值,那么这是一种非常低效的更新现有jsonb字段的方法。是否有类似于ActiveRecord的update\u all功能,但用于将新数据合并到jsonb字段,并且不需要对数据库进行多次调

我在一个名为email_preferences的表中有一个字段,带有一些默认值。现在我必须向这个对象添加一个自定义字段

一种方法是检查所有记录并手动更新每个记录,如下所示:-

User.find_每个do|用户|
user.email_首选项['九月电子邮件']=true
user.save
结束

如果有很多值,那么这是一种非常低效的更新现有jsonb字段的方法。是否有类似于ActiveRecord的
update\u all
功能,但用于将新数据合并到jsonb字段,并且不需要对数据库进行多次调用?

您需要使用
jsonb\u SET
pg功能:
User.update\u all“email\u preferences=jsonb\u SET(email\u preferences),{septer\u email}“,'true',true)”

我们还可以使用
|
操作符将值连接到现有的jsonb对象,如下所示:-

json\u value={septer\u email:true}.to\u json
update_all(“email_preferences=email_preferences | |‘#{json_value}’::jsonb”)
有关Postgresql运算符和函数的更多信息,请参见