【问题标题】:Updating the column of object in rails object by its position in the array通过其在数组中的位置更新rails对象中的对象列
【发布时间】:2018-04-12 05:31:45
【问题描述】:

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

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

【问题讨论】:

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


    【解决方案1】:

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

    @user.update_all(order_field: value)
    

    【讨论】:

      【解决方案2】:

      假设你有一个posts的数组,那么你可以像下面这样操作

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

      这将为每个post 执行一个查询。如果您想要一个查询来更新数组中的所有帖子,那就更难实现了。我能想到的选项:

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

      【讨论】:

      • 它是正确的,但是,我试图在一个查询中做到这一点是否可能......??
      • 这是可能的,但是要复杂得多,并且不确定是否值得恕我直言。检查这个答案:stackoverflow.com/questions/11563869/…
      猜你喜欢
      • 1970-01-01
      • 2020-11-25
      • 1970-01-01
      • 1970-01-01
      • 2019-08-29
      • 2017-08-17
      • 2019-07-07
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多