我在rails上的ruby中创建了一个应用程序,它有一个带有以下内容的变量:
[<Node id: 474, value: 1>, <Node id: 475, value: 2>, <Node id: 465, value: 1>]
我想知道如何更改给定属性的数据,例如id:
之前:
[<Node id: 474, value: 1>, <Node id: 475, value: 2>, <Node id: 465, value: 1>]
然后:
[<Node id: 1, value: 1>, <Node id: 2, value: 2>, <Node id: 3, value: 1>]
答案 0 :(得分:1)
应该这样做:
list = [<Node id: 474, value: 1>, <Node id: 475, value: 2>, <Node id: 465, value: 1>]
list.each_with_index do |item, index|
item.id = index + 1
end
但是,由于这是用RoR标记的,我假设您正在尝试更新存储在数据库中的模型的ID。 ActiveRecord不会让您更容易更新ID,因为这可能会破坏数据完整性。对save
的简单调用无效。如果你真的想覆盖ID,我建议你不要这样做,你需要使用update_all
。