ruby-on-rails 在SQLite数据库中查找和替换字符串的子串

xe55xuns  于 2023-03-04  发布在  Ruby
关注(0)|答案(1)|浏览(148)

我有一个名为 Player * 的SQLite模型。 其中有一个名为 photo 的列,包含一个字符串。例如:84450.jpg
我希望能够找到所有包含.jpg的值(实际上是每个单元格,并且总是如此),并将其替换为. png。
所以84450.jpg在我的数据库中变成了84450.png。
我将使用一个rake任务来完成此操作。在运行rake任务时,我尝试了以下操作,但没有成功:

Player.where('photo LIKE?', "%jpg%").update_all(:photo, Player.photo.gsub(/ jpg$/, "png"))

以及

transform = Player.where("photo LIKE '% jpg'")
transform .find_each do |model|
  model.update_column(:photo, model.photo.gsub(/ jpg$/, "png"))
end
wz3gfoph

wz3gfoph1#

您可以:

players = Player.where("players.photo LIKE '%.jpg'")
players.each do |player|
  player.update(photo: player.photo.gsub(/.jpg/, ".png")
end

我在.jpg.png中包含了.,以防您的照片名称中包含字符串jpg

相关问题