Avn*_*ner 9 activerecord ruby-on-rails
我有一个具有长字符串字段的ActiveRecord模型.实际上,这个字符串表示一个我想要就地修改而不是复制整个字符串的数组.
例如,假设Somemodel有一个字符串字段array.然后以下无法保存:
m = Somemodel.first
m.array[someindex] = somevalue
m.save
Run Code Online (Sandbox Code Playgroud)
实际上,save返回true似乎检查它array是否相同object_id并确定模型没有改变并跳过往返数据库.
我最终使用了以下解决方法:
m = Somemodel.first
a = String.new(m.array) # remember, the array is represented as a string
a[someindex] = somevalue
m.array = a
m.save
Run Code Online (Sandbox Code Playgroud)
请注意,m.array必须在修改其值后进行设置,因为save它不仅仅是查看值object_id.
这感觉很麻烦,需要复制整个字符串.不适合大型阵列.在没有前面的验证测试的情况下,我可以告诉save我们绕过这些is-model-modified检查吗?
Mar*_*oda 13
也许这就是你要找的东西:http://api.rubyonrails.org/classes/ActiveModel/Dirty.html:
如果就地修改了属性,那么请使用[attribute_name] _will_change!标记>属性正在改变.
| 归档时间: |
|
| 查看次数: |
5913 次 |
| 最近记录: |