Rails,activerecord,从 hstore 记录中删除键值对

Posted

技术标签:

【中文标题】Rails,activerecord,从 hstore 记录中删除键值对【英文标题】:Rails, activerecord, Delete a key value pair from hstore record 【发布时间】:2017-08-07 04:16:19 【问题描述】:

我的模型中有这样的 hstore:

store_accessor :properties, :a, :b, :c, :d

假设数据库中的一条记录具有这样存储的 hstore 列(注意这不是整个记录,只是此处显示的 hstore 部分):

properties: "a"=>"1", "b"=>"2", "d"=>"5"

如果我想删除键值对 "b"=>"2" 使得结果是

properties: "a"=>"1", "d"=>"5"

如何在模型代码中执行此操作?我试过这个:

 update_attribute(:b, nil)

但这会将 b 设置为 nil。我想删除 b 的键值对而不是设置为 nil。

谢谢!

【问题讨论】:

我认为在“属性”上使用 except 方法然后保存记录会有所帮助。试试这个,但根据您的需要进行修改。 -> http://***.com/questions/6227600/how-to-remove-a-key-from-hash-and-get-the-remaining-hash-in-ruby-rails 【参考方案1】:

试试

update_attribute([%(properties = delete("properties",?)), 'b'])

properties.delete("b")

【讨论】:

请在您的回答中提供更多详细信息。解释为什么这段代码会有帮助。

以上是关于Rails,activerecord,从 hstore 记录中删除键值对的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Rails 中链接原始 SQL 查询或如何从 Rails 中的原始 SQL 查询返回 ActiveRecord_Relation?

如何从 Rails 中的查询中排除 id 数组(使用 ActiveRecord)?

Rails 中的表关联 - ActiveRecord

使用 ActiveRecord 语法从 Rails 中的连接表中选择或按列排序

检索ActiveRecord / Rails中没有关系的对象

Rails 6.1.4 中的 ActiveRecord 枚举行为更改