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)?
使用 ActiveRecord 语法从 Rails 中的连接表中选择或按列排序