У меня есть сайт 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