我刚开始在带有 Rails 4 的 Postgres 中使用数组数据类型,但我无法获取现有数组的值以进行更新。我有一个名为“数量”的列,它是一个整数数组 ([0,0])。我想更新 'quantity[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]>
如您所见, Assets 对象的数量值发生了变化,但是当我尝试使用“a.save”保存对象时,当我重新加载对象时,更改没有反射(reflect)出来。
如有任何帮助,我们将不胜感激。
谢谢
最佳答案
我对 http://apidock.com/rails/ActiveRecord/Dirty 的阅读是您必须调用 ..._will_change!
在更改属性之前。您应该能够通过检查各种情况下的更改
来确认这一点。
更新:我刚刚用字符串属性测试了行为,即使在调用 ..._will_change
之前进行了更改,它仍然会保存更新后的字符串,所以我的解释可能不正确。
关于ruby-on-rails - Rails 4 Postgresql 数组数据类型 : updating values,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19989924/