【问题标题】:Detect changes in PostgreSQL json field检测 PostgreSQL json 字段的变化
【发布时间】:2014-05-05 04:41:20
【问题描述】:

我正在使用 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"] 

如何强制它保存更改?

【问题讨论】:

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


【解决方案1】:

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

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

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

【讨论】:

  • 我在 Rails 4.1.8 上遇到了类似的问题。继续在GitHub Issue 上进行对话。
猜你喜欢
  • 1970-01-01
  • 2017-08-20
  • 1970-01-01
  • 2017-12-08
  • 1970-01-01
  • 1970-01-01
  • 2012-09-29
  • 2011-09-25
  • 1970-01-01
相关资源
最近更新 更多