Ruby on rails 根据rails对象在数组中的位置更新其列

Ruby on rails 根据rails对象在数组中的位置更新其列,ruby-on-rails,ruby,ruby-on-rails-3,activerecord,Ruby On Rails,Ruby,Ruby On Rails 3,Activerecord,我在Rails中为一些表创建了一个对象数组。我想通过一个活动记录查询,根据该对象在数组中的位置来更新其order字段。我该怎么做 我尝试了update\u all.(“order”=>?)但无法获取在update\u all中更新的对象 假设@user(只有您可以使用相应对象的引用)是对象数组(Activerecord),那么要更新数组中所有用户的顺序字段,您必须运行以下查询 @user.update_all(order_field: value) 假设您有一组帖子,那么您可以执行如下操作 p

我在Rails中为一些表创建了一个对象数组。我想通过一个活动记录查询,根据该对象在数组中的位置来更新其order字段。我该怎么做

我尝试了
update\u all.(“order”=>?)
但无法获取在
update\u all
中更新的对象

假设@user(只有您可以使用相应对象的引用)是对象数组(Activerecord),那么要更新数组中所有用户的顺序字段,您必须运行以下查询

@user.update_all(order_field: value)

假设您有一组
帖子
,那么您可以执行如下操作

posts.each_with_index do |post, index| 
  post.update_attributes order: index 
end 
这将对每个
post
执行一个查询。如果您想要一个查询来更新数组中的所有帖子,那么实现起来就困难多了。我能想到的选择是:

  • 批量更新
  • 使用存储过程

这是正确的,但是,我试图在一个查询中完成这项工作,是否可能…?这是可能的,但要复杂得多,而且我不确定这是否值得。检查以下答案: