ruby-on-rails - 如何遍历 ActiveRecord 列列表并替换文本?
问题描述
我注意到我的文本编辑器插入了几个需要替换的奇怪字符。我有大约 13 条记录,每条记录可能有 6-7 列,其中包含需要替换此字符的文本。这是我为提出一个选项所做的工作:
Assessment.find(1039).issues.each do |issue|
issue.attributes.each do |attribute|
issue.attributes.keys.each do |key|
if issue.attributes[key].to_s.include? "\u2019"
issue.update(key, issue.attributes[key].gsub("\u2019", "'"))
end
end
end
end
但是,这不起作用,因为我收到以下错误:
Traceback (most recent call last):
6: from (irb):212
5: from (irb):213:in `block in irb_binding'
4: from (irb):213:in `each'
3: from (irb):214:in `block (2 levels) in irb_binding'
2: from (irb):214:in `each'
1: from (irb):216:in `block (3 levels) in irb_binding'
ArgumentError (wrong number of arguments (given 2, expected 1))
我将如何做到这一点?
解决方案
ActiveRecord::Persistence#update
接收单个参数,该参数是包含要在 UPDATE 语句中使用的键(列)和值(更新值)的散列。
请尝试:
issue.update(key => issue.attributes[key].gsub("\u2019", "'"))
我可以建议您通过它们(如果存在)来获取每个问题assesment_id
,然后find_each
也许,如果记录数量足够大。
推荐阅读
- python - Django 从文本字段中的 JSON 字符串中检索 JSON 键/值
- python - Python if 和 isinstance 在这个例子中是如何工作的?
- c++ - 降序插入排序
- python - 我有一个要下载的 .mp4 文件的链接。但在我下载它之前,我希望它被压缩。有什么建议吗?
- node.js - 如何使用 json2csv 创建文件并将其上传到 Firebase 存储
- scala - 以日期为键在 Seq 上滚动总和
- neo4j - 如何使用 Cypher 递归更新项目计划图
- reactjs - 移动菜单效果扩展到桌面视图
- css - 如何 XHTML-CSS 盒子模型
- python - Stripe create customer for one time charge