ユーザ登録で仮登録、本登録のステップを踏むケースでは仮登録で放置されるとデータベースにゴミが残りますので、これを定期的に削除します。
クリーンアップメソッドをモデルに追加
Userモデルに24時間以上経っていて、status がfalseのレコードを削除するメソッドを追加します。
def self.cleanup
User.delete_all(["status = ? and update_at < ?",false,1.days.ago]);
end
ここで status = false と直接記載するとsqlite3ではエラーになります。sqlite3ではfalseは'f'として保存しているので status = 'f' と書けばエラーにならないのですが、これではほかのDBとの互換性がとれません。このようにプレースホルダをつかうと違いを吸収してくれるようです。続きを読む