【发布时间】:2021-06-14 12:30:56
【问题描述】:
我发现自己执行了一个 rake 任务,用 - 替换 Client 模型的 first_name 和 last_name nil,但后来我很惊讶这两个字段中不仅有 nil,而且还有 @ 987654326@' '' '等等,有没有办法在不经过所有Clients的情况下识别出满足所有这些条件的客户?
澄清一下,以前Client 模型没有对这些字段进行验证。
【问题讨论】:
-
试试
Client.where.not("first_name > ''")如果这对你有用 -
它适用于某些情况,例如我拥有的带有 first_name: ' ' 的客户端不是由此查询返回的,但它是一个提前。谢谢!
-
Client.where("NULLIF(TRIM(first_name),'') IS NULL")应该处理所有上述情况,假设这些情况实际上是空格而不是像水平制表符这样的不可打印字符。然后,您可以通过update_all调用来更新所有记录以满足您的条件(如果需要)。
标签: ruby-on-rails activerecord