Rails 控制台更新
Rails console update
您好,我正在尝试使用 rails 控制台更新 table 中的数据。
Box.where("code = 'learning'").update(duration: 10)
我运行这个命令。
数据暂时更改中。
Box.where("code = 'learning'")
当我运行这个珍贵的数据正在显示。
任何人都可以让我的问题。
提前谢谢你。
#update
更新一条记录。
user = User.find_by(name: 'David')
user.update(name: 'Dave')
它将 return true/false 取决于记录是否实际更新。您可以通过检查错误对象来查看验证错误:
user.errors.full_messages
在种子文件和控制台等非用户交互情况下,使用 #update!
、#save!
和 #create!
等会引发异常的 bang 方法可能会有所帮助如果记录无效。
如果你想一次更新多条记录你需要使用#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 个数据库查询时要慢得多。
您好,我正在尝试使用 rails 控制台更新 table 中的数据。
Box.where("code = 'learning'").update(duration: 10)
我运行这个命令。
数据暂时更改中。
Box.where("code = 'learning'")
当我运行这个珍贵的数据正在显示。
任何人都可以让我的问题。 提前谢谢你。
#update
更新一条记录。
user = User.find_by(name: 'David')
user.update(name: 'Dave')
它将 return true/false 取决于记录是否实际更新。您可以通过检查错误对象来查看验证错误:
user.errors.full_messages
在种子文件和控制台等非用户交互情况下,使用 #update!
、#save!
和 #create!
等会引发异常的 bang 方法可能会有所帮助如果记录无效。
如果你想一次更新多条记录你需要使用#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 个数据库查询时要慢得多。