更改列表中的元素

时间:2014-10-20 15:59:26

标签: ruby-on-rails ruby

我在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>] 

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