【问题标题】:How to update hstore columns in Rails 4如何更新 Rails 4 中的 hstore 列
【发布时间】:2014-03-17 09:00:47
【问题描述】:

有没有办法限制可以保存哪些hstore 列?到目前为止,我有以下代码:

store_accessor :widget_locations, :left_area1, :mid_area1, :left_area2, :mid_area2, :right_area2

但这似乎仍然允许保存其他键名,即。 middle_area123

另外,我如何更新hstore,例如update_attributesupdate

【问题讨论】:

    标签: ruby-on-rails ruby postgresql ruby-on-rails-4 hstore


    【解决方案1】:

    我可能是错的,但我的猜测是您正在拨打 widget_locations 之类的电话

    item.widget_locations[:left_area1] = thing
    

    如果是这样,您应该将其更改为

    item.left_area1 = thing
    

    因为您告诉store_accessor 创建属性:left_area1, :mid_area1, :left_area2, :mid_area2, :right_area2,该属性将被序列化到数据库列:widget_locations。现在这些属性的行为类似于 普通 属性,因此您可以对它们进行验证等。

    这也允许您照常更新项目:

    item.update(name: 'Test', left_area: 'garden', mid_area: 'livingroom')
    

    hstore 的问题是访问序列化列允许您添加新的未知属性,因此最好直接访问您明确指定的属性。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-08-31
      • 1970-01-01
      • 1970-01-01
      • 2017-04-05
      • 1970-01-01
      • 2013-04-23
      • 2014-11-09
      • 2013-10-05
      相关资源
      最近更新 更多