我有一个Rails站点,记录简单的操作,例如人们上传和下载信息的时间。对于每个新操作,都会创建EventLog
。如何查询许多字段,允许为NULL
如果用户改变了主意,该怎么办?我有一个after_create
回调,它查找补充操作并删除它们,如果它找到最近的一对。为了清楚起见,我的意思是说,如果某人上传了某些内容并很快取消,则两个event_logs
都将被删除。接下来是我的回调。
# Find duplicate events by searching nearly all the fields in the EventLog table
@duplicates = EventLog.where("user_id = ? AND event = ? AND project_id = ? AND ...,).order("created_at DESC")
if @duplicates.size > 1
@duplicates.limit(2).destroy_all
end
上面的代码完全不是那么回事,因为如果任何字段恰好是零,该查询返回[]
。
我该如何编写这段代码,以便它可以处理空值,和/或是否有更好的方法来完成此操作?
那么它只是SQL,所以你可以添加'user_id IS NULL或user_id =?'键入每个参数的语法。这对你的情况适合吗? – Matt