我有一个根据用户偏好显示输入的表单。我将值存储为hstore哈希,因为我事先并不知道每个用户的表单输入究竟是什么。我遇到的问题是,即使用户有输入首选项并不意味着他们每次都必须输入一个值。哪个,可能导致:foo => “”。
所有文档示例都向您展示了如何查找您知道密钥名称的记录。在我的情况下,我不知道密钥名称...我需要找到散列中的所有密钥,其值=> “”。
然后,我应该能够为每个空值
做类似文档显示的事情person.destroy_key(:data,:foo).destroy_key(:data,:bar).save
avals(hstore)可能是我需要用户...你如何使用带有轨道的avals?
答案 0 :(得分:1)
由于hstore只是rails中的哈希值...你只需要在保存之前评估哈希值。
...在模型中
before_save :remove_blanks
private
def remove_blanks
self.hstore = self.hstore.reject{ |k,v| v.blank? }
end
将'hstore'替换为您的hstore列名