ruby-on-rails - 检测 PostgreSQL json 字段的变化

标签 ruby-on-rails json postgresql ruby-on-rails-4

我正在使用 json 字段在我的一个模型中存储一些额外的参数。

它工作得很好,除了它没有检测到我在使用方括号访问数据时所做的更改:

2.1.1 :002 > p = Payments.last
 => {...}
2.1.1 :003 > p.params.keys
 => ["receipt_data"] 
2.1.1 :004 > p.params['verification_data'] = 'test'
 => "test" 
2.1.1 :005 > p.params.keys
 => ["receipt_data", "verification_data"] 
2.1.1 :006 > p.params_changed?
 => false 
2.1.1 :007 > p.save
   (0.2ms)  BEGIN
   (0.2ms)  COMMIT
 => true 
2.1.1 :008 > Payment.last.params.keys
  Payment Load (0.5ms)  SELECT  "payments".* FROM "payments"   ORDER BY "payments"."id" DESC LIMIT 1
 => ["receipt_data"] 

我如何强制它保存更改?

最佳答案

强制,在任何更新之前。你可以说:

p = Payments.last
p.params_will_change!
p.params['verification_data'] = 'test'
p.save

顺便说一句,ActiveRecord 应该自动处理脏跟踪。所以,如果您可以在 github 上推送一个重现此问题的应用程序,我可以尽力提供帮助。

关于ruby-on-rails - 检测 PostgreSQL json 字段的变化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23464905/

相关文章:

python - 如何使用 DRF3 获取 Django 中的整个 JSON 对象?

javascript - google电子表格导出为json文件,如何格式化?

ruby-on-rails - rails 什么时候在 Controller 中查找 Index 方法,什么时候查找 show 方法

ruby-on-rails - 在 Ubuntu 上更新 RubyGems

ruby-on-rails - Ruby:不兼容的库版本

ruby-on-rails - Ruby on Rails nil 不能被强制转换为 BigDecimal

Python请求,如何发送没有 ""的json请求

sql - Postgres 进程的高 CPU 使用率

java - 如何让 Java 测试容器在 Docker 多阶段构建中工作?

ruby-on-rails - postgres 导入 csv 并自动填充 ID 并创建和更新