Rails postgres hstore - 如何从hash中省略nil输入值

时间:2013-06-24 22:04:10

标签: ruby-on-rails-3 postgresql-9.2 hstore

我有一个根据用户偏好显示输入的表单。我将值存储为hstore哈希,因为我事先并不知道每个用户的表单输入究竟是什么。我遇到的问题是,即使用户有输入首选项并不意味着他们每次都必须输入一个值。哪个,可能导致:foo => “”。

所有文档示例都向您展示了如何查找您知道密钥名称的记录。在我的情况下,我不知道密钥名称...我需要找到散列中的所有密钥,其值=> “”。

然后,我应该能够为每个空值

做类似文档显示的事情

person.destroy_key(:data,:foo).destroy_key(:data,:bar).save

avals(hstore)可能是我需要用户...你如何使用带有轨道的avals?

1 个答案:

答案 0 :(得分:1)

由于hstore只是rails中的哈希值...你只需要在保存之前评估哈希值。

...在模型中

  before_save :remove_blanks

  private

  def remove_blanks
    self.hstore = self.hstore.reject{ |k,v| v.blank? }
  end

将'hstore'替换为您的hstore列名