ruby-on-rails – Rails Postgres hstore. DB未更新更改的值
发布时间:2020-12-16 20:30:28 所属栏目:百科 来源:网络整理
导读:我正在努力了解如何使用hstore,如果我尝试修改我的哈希值,似乎数据库没有更新. 在我的导轨控制台我做 u = User.newu.hash_column = {'key' = 'first'}u.save 我在我的控制台收到一条消息 (0.4ms)开始 SQL(2.0ms)UPDATE“users”SET“hash_column”= $1,“upd
我正在努力了解如何使用hstore,如果我尝试修改我的哈希值,似乎数据库没有更新. 在我的导轨控制台我做 u = User.new u.hash_column = {'key' => 'first'} u.save 我在我的控制台收到一条消息 现在当我尝试 u.hash_column['key'] = 'second' 该模型在控制台中似乎是正确的 puts u.hash_column 给 但是当我尝试保存这个 如果我更改用户模型上的另一个属性并保存它,则hash_column仍然不会被更新.我可以更改数据库中的hash_column的唯一方法就是分配给完整的哈希 u.hash_column = {'key' => 'second'} 这是怎么意味着工作或我做错了? 解决方法
这是由于rails目前跟踪更改的方式.当您使用属性设置器(u.hash_column)时,它将仅跟踪更改.如果您更新哈希值中的值,则必须通过调用u.hash_column_will_change!通知Rails更改该值.这将把值标记为脏,下一次保存被调用时,它将被保留.
这也会影响数组和字符串和日期.如果你打u.string_value.gsub!或u.array_column<<<值不会调用< column> _will_change!那些列的方法 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |