Rails 3.1.4アプリでは、システムログの過剰な数のエントリがsys_logモデルのメソッドで削除されます。
def self.trim_log(num_entry)
if SysLog.count > num_entry
SysLog.where("log_date < #{SysLog.all[num_entry -1].log_date}").delete_all
end
end
ここで、num_entryは保持したいログエントリです。そのエントリより前のエントリはすべて削除されます。ただし、delete_allにより、rspecで次のエラーが発生します。
←[31mFailure/Error:←[0m ←[31mSysLog.trim_log(1)←[0m
←[31mActiveRecord::StatementInvalid:←[0m
←[31mSQLite3::SQLException: near "03": syntax error: DELETE FROM "sys_logs" WHERE (log_date < 2012-06-10 03:43:21 UTC)←[0m
エラーはRailsコンソールでも同じです。私たちの開発では、データベースはsqlite3です。log_dateは日時です。私たちのコードの何が問題になっていますか?本当にありがとう。