관리용 일괄 작업을 참고할 수 있습니다.
다음과 같은 방식으로 작동할 것입니다.
remove=Post.where("raw like '%:some_emoji%'")
remove.each do |post|
new_raw=post.raw.gsub(":some_emoji","")
if new_raw != post.raw
PostRevisor.new(post).revise!(
post.user,
{ raw: new_raw },
bypass_bump: true,
edit_reason: "Remove emoji we no longer like",
bypass_rate_limiter: true,
)
end
end
테스트는 해야 하지만, 편집 이력이 생성되므로 되돌릴 수 있습니다.
편집 이력을 원하지 않는다면 PostRevisor 대신 post.raw=new_raw;post.save를 사용할 수 있습니다.