【问题标题】:Update ActiveRecord Query Record's field from 1 to n without looping将 ActiveRecord 查询记录的字段从 1 更新为 n 而不循环
【发布时间】:2018-09-21 11:49:31
【问题描述】:

是否有任何逻辑可以将 ActiveRecord 查询记录的字段从 1 更新为 n。

@user = User.where(country: 'US')

需要将以上@user 的字段计数从1 更新为n。

提前致谢。

编辑:

需要更新所有记录 - 字段是count

AR查询会返回数组,需要数组(元组)的count字段中的每个元素从1到n

示例:AR 查询输出:[User1, User2, User3, User4, ...]

User1 的count 字段必须更新为1

User2 的count 字段必须更新为2 等等。

【问题讨论】:

  • 你的意思是用户在数据库中有一个计数字段吗?
  • 您要更新哪个用户字段?并将@user 更改为@users 以获得更好的命名约定。
  • 我不明白你的问题。更新哪个字段?是单条记录,还是记录集合? 可能您正在寻找我们使用的答案update_all??
  • User.where(country: 'US') 不会返回单个用户,而是返回一组用户。你想更新什么?该阵列中的所有用户?到同一个n?
  • 由于他在问题标题中写了without looping,我假设他要求User.where(country: 'US', id: 1..N).update_all(whatever: value)

标签: ruby-on-rails ruby ruby-on-rails-4 activerecord ruby-on-rails-5


【解决方案1】:

根据您的数据库,您可以使用 SQL 执行此操作,但 ActiveRecordRelation 不支持。

看看这个:Update SQL with consecutive numbering

要执行 SQL,您可以使用:

User.connection.execute("YOUR SQL HERE...")

【讨论】:

    猜你喜欢
    • 2015-10-17
    • 2011-03-20
    • 2020-07-19
    • 1970-01-01
    • 1970-01-01
    • 2013-07-07
    • 2020-11-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多