Я пытаюсь получить некоторые записи и иметь проблему, когда один из моих параметров является пустым массивом. Я понимаю, почему запрос не возвращает никаких результатов, но я не знаю, как лучше обращаться с ним в рельсах. В моем коде, я звонюRails `NOT IN (null)` не возвращает никаких результатов
@user.trustees.where(["trustees.default = true AND trustees.id NOT IN (?)", trustees.map{ |t| t.id }])
Это работает, как ожидалось, когда массив опекуны фактически содержит объекты, однако, когда он не делает, то запрос возвращает ничего, как SQL дали результаты в
SELECT `users`.*
FROM `users`
INNER JOIN `trustees` ON `users`.`id` = `trustees`.`trustee_id`
WHERE `trustees`.`truster_id` = 1
AND (trustees.default = true
AND trustees.id NOT IN (NULL))
Что является самым простым способом избежать проблемы NOT IN (NULL)
, что у меня есть?
Отлично! Я отправился с '@ user.trustees.where ([" trustees.default = true AND (trustees.id NOT IN (: trustees) ИЛИ: trustees IS NULL) ", {trustees: trustees.map (&: id) }]) ', но это МНОГО очиститель. Cheers: D – PaReeOhNos
@PaReeOhNos: Это преимущество использования правильных тегов версии rails на SO :) – fotanus
Согласен. Всегда раздражать, когда используются неправильные теги, а затем пользователь жалуется, что он не работает с используемой версией: P – PaReeOhNos