- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我想通过 update_all 改变很多记录的属性。用户应该能够相对更改优先级(记录 1 的优先级为 0,记录 2 的优先级为 200,用户可以选择给他们 +200,这样他们最终分别得到优先级 200 和 400)。和同时更改其他列。rails 中的首选方式是
Model.update_all(name: name)
但是对于 prio 我现在只有我知道的字符串形式 -
Model.update_all("prio = prio + #{change_of_prio}")
如何将后者改成rails的Hash-Form?或者,我如何在一个 update_all
语句中同时执行这两项操作(在不失去 rails 在使用 Hash 调用它时进行必要转义的优势的情况下)?
最佳答案
你必须使用数组表示法。这会起作用:
Model.update_all(["prio = prio + :change_of_prio, name = :name", {change_of_prio: 200, name: "foo"}])
# UPDATE `models` SET prio = prio + 200, name = 'foo'
:change_of_prio
和 :name
是指代哈希中相应值的命名占位符。 Rails 会为您处理转义。
关于sql - ActiveRecord Hash 形式表示 update_all ("prio = prio + 200"),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21454792/
我的预订数据库和汽车数据库之间存在多对多关系,以下内容在我的预订 Controller 中并被路由到帖子。 def reserveConfirm pick_time = params[:pick_y]
我正在尝试为我的所有用户更新“allowed_ips”字段,但它没有像我预期的那样工作。 'allowed_ips' 是一个带有 ip 地址的字符串。 User.where(role: 1).upda
我感兴趣是否可以在 update_all 方法中使用对象属性作为值。 假设我们有关系 Article,它具有属性 part1 和 part2。现在我想用 part2 的值更新与 Article 相关的
我感兴趣是否可以在 update_all 方法中使用对象属性作为值。 假设我们有关系 Article,它具有属性 part1 和 part2。现在我想用 part2 的值更新与 Article 相关的
我有两个模型,它们之间的关联是has_and_belongs_to_many。我需要重构代码,因为它会导致 n + 1 个查询。 问题:n+1 个查询 1。任务 class Task 2。用户
我有这个迁移任务: owner = Owner.first Factory.update_all(original_owner: owner) 它返回一个错误: ActiveRecord::State
我在 Rails 中的小服务 class ReadUserService def self.read_users(count) users = Users.inactive.limit(c
我正在使用 update_all 直接更新数据库中的特定记录。我在解析 csv 文件的脚本中执行此操作。我知道 update_all 返回一个关于更改了多少行的整数。有些行返回 1,有些行返回 0,这
假设我有一个模型: class Result < ActiveRecord::Base attr_accessible :x, :y, :sum end 而不是做 Result.all.find_
这与以下内容隐约相关: How to Update all Dates in a Table 但前提是你真的用力眯眼。 第 1 部分 - 我知道 SQL 可以根据涉及同一表中其他列的公式更新表中的一列
所以我有一个 update_all 查询,如下所示: Task.where(...).update_all('position = position - X, parent_id = Y') 我想用整
RoR 中有 update_all 方法 如果 update_all 失败,它会返回什么?它会引发异常吗? 例如: ActiveRecord::Base.transaction do users
根据 Rails 文档 here和 here , 使用 update_all不执行以下操作 - 它跳过验证 它不会更新 updated_at字段 它默默地忽略 :limit和 :order方法 我正在
我有一个付款表,我希望能够同时更新所有 date_of_payment 字段,即使用相同的日期。 在我看来,我有以下几点 'form_for_all', method: :put do %>
这是我在 Controller 中的功能: def sort params[:state].each_with_index do |id, index| State.update_all(
我想使用事件记录的单个查询来更新多行。我不必使用 update_all 因为它会跳过验证。有什么方法可以在 Rails Active Record 中做到这一点吗? 最佳答案 如果您想更新多个记录而不
我的 after_commit 设置如下。 class MyModel < ActiveRecord::Base after_commit { Rails.logger.info ("commit
我目前正在做一个小项目,我想更快地为我的数据库播种。我将一个名为“grand_total_points”的新列迁移到我的用户表中。所以最初我使用的是这段代码。 user = User.all user
我的 mysql 表中有一列名为 download_count,类型为 int。 现在我想使用 update_all 用一些值更新一些字段,同时增加 download_count。 我试过以下语法:
使用 activerecord 使用 hstore 列更新多条记录的好方法是什么?现在我正在像这样循环、更新和保存: time = Time.now.to_s scoped_tasks.each do
我是一名优秀的程序员,十分优秀!