有没有办法限制可以保存hstore
列的内容?到目前为止,我已经得到了以下代码:
store_accessor :widget_locations, :left_area1, :mid_area1, :left_area2, :mid_area2, :right_area2
但这似乎仍然允许保存其他键名,即。 middle_area123
另外,我如何更新hstore
或update_attributes
等update
?
答案 0 :(得分:4)
我可能错了,但我的猜测是你在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
的问题是,访问序列化列将允许您添加新的未知属性,因此最好直接访问您明确指定的属性。