通过其在数组中的位置更新rails对象中的对象列

时间:2018-04-12 05:31:45

标签: ruby-on-rails ruby ruby-on-rails-3 activerecord

我在Rails中有一些对象数组用于某些表。我想通过单个Active Record Query在数组中通过该对象的位置更新其order字段。我怎样才能做到这一点?

我尝试了update_all.(:"order" => ?)但无法获取update_all中正在更新的对象。

2 个答案:

答案 0 :(得分:0)

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

@user.update_all(order_field: value)

答案 1 :(得分:0)

假设您有一个posts数组,那么您可以执行以下操作

posts.each_with_index do |post, index| 
  post.update_attributes order: index 
end 

这将为每个post执行一次查询。如果您希望单个查询更新数组中的所有帖子,那么实现起来要困难得多。我能想到的选择:

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