微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Datamapper JSON哈希不更新

如何解决Datamapper JSON哈希不更新

| 在具有DataMapper和dm-types的Ruby / Sinatra中,在模型挂钩中,我具有以下代码块:
self.parent.Meta[:post_count] += 1
self.parent.save
不幸的是,这行不通-作为JSON类型列的Meta不会得到更新。请帮助?     

解决方法

当您通过复杂的属性值(例如JSON)通过自己的API(在您的情况下为#[])修改时,DM中的脏跟踪系统很遗憾会被绕开,这意味着您的资源不会被标记为脏。解决这个问题不是小事,但迟早会解决。 现在,作为一种解决方法,您可以覆盖整个meta属性值并增加post_count,例如:
self.parent.meta = parent.meta.merge(\"post_count\" => parent.meta.fetch(\"post_count\",0)+1)
我了解它看起来不太好,但是现在没有其他方法可以做到这一点。您可以使用类似
increment_post_count
的方法封装该代码以使其正确。 另外,请注意,您应该使用字符串键而不是符号。     

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。