Rails 4 Postgresql 数组数据类型:更新值



我刚刚开始使用 Rails 4 的 Postgres 中的数组数据类型,但我无法更新现有数组的值。 我有一个名为"数量"的列,它是一个整数数组( [0,0] )。 我想更新"数量[0]"的值,并在控制台中尝试了以下操作:

a = Asset.find(2) 
=> #<Asset id: 2, quantity: [0,0]>
a.quantity[0] = 5
=> 5 
a.quantity_will_change! 
=> [5, 0] 
a.save
=> true
a.reload
=> #<Asset id: 2, quantity: [0,0]>

如您所见,资产对象的数量值是更改的,但是当我尝试使用"a.save"保存对象时,当我重新加载对象时,更改不会反映。

任何帮助将不胜感激。

谢谢

我对 http://apidock.com/rails/ActiveRecord/Dirty 的理解是,在更改属性之前,您必须调用..._will_change!。您应该能够通过检查各种情况下的changes来确认这一点。

更新

:我刚刚使用字符串属性测试了该行为,即使在调用..._will_change之前进行了更改,它仍然保存更新的字符串,因此我的解释可能已关闭。

> <attribute>_will_change! 只有在数组被替换时才会更新值。像[]=这样的就地修改根本不会保存。

最新更新