ruby-on-rails - Rails 控制台更新
问题描述
您好,我正在尝试使用 rails 控制台更新表中的数据。
Box.where("code = 'learning'").update(duration: 10)
我运行了这个命令。
数据暂时发生变化。
Box.where("code = 'learning'")
当我运行它时,正在显示宝贵的数据。
谁能让我这个问题。先感谢您。
解决方案
#update
更新单个记录。
user = User.find_by(name: 'David')
user.update(name: 'Dave')
它将根据记录是否实际更新而返回真/假。您可以通过检查错误对象来查看验证错误:
user.errors.full_messages
在种子文件和控制台等非用户交互情况下,使用 bang 方法会很有帮助,如果记录无效,#update!
这将引发异常。#save!
#create!
如果您想一次更新多条记录,您需要使用#update_all
:
Box.where("code = 'learning'")
.update_all(duration: 10)
这将创建单个 SQL 更新语句,并且是迄今为止性能最高的选项。
您还可以遍历记录:
Box.where("code = 'learning'").find_each do |box|
box.update(duration: 10)
end
如果您要更新的值必须在应用程序中计算,这有时是必要的。但它要慢得多,因为它会创建 N+1 个数据库查询。
推荐阅读
- javascript - 查明用户是否具有特定角色
- amazon-web-services - 如何为 AWS Glue 跳过 csv 中的前 N 行
- sql - 插入视图重新组合多个表?
- github - 仅在新标签上触发 Github Action?
- python - Tensorflow 对象检测 api 获取按边界框坐标排序的预测
- html - HTML 输入提交按钮不起作用?怎么办?
- vue.js - Vue Test Utils - 数据在测试之间保持不变
- c# - 如何使用 sqoop(使用 Azure HDInsight)将数据从 mssql 导入 hbase?
- javascript - 在 ClojureScript 中实现静态属性
- git - Git - 创建类似子模块但反转的东西