Подтвердить что ты не робот

Условия поиска activerecord - поиск нулевого или ложного

При выполнении поиска в активной записи я ищу запись, у которой нет архивного бита, установленного в true.

Некоторые из заархивированных битов имеют нулевое значение (которые не архивируются), другие архивированные установлены в false.

Очевидно,

Project.all(:conditions => {:archived => false})

пропускает проекты с заархивированными битами с нулевыми значениями. Как можно выбрать все неархивированные проекты с активной записью?

4b9b3361

Ответ 2

Rails 4 (возможно, ранее) поддерживает:

Project.where(archived: [false, nil])

..., что довольно кратким.

Ответ 3

Правильный способ агрегирования базы данных для этого:

Project.where("archived IS NULL OR archived = ?", false)

Ответ 4

@metasoarous

Try:

Project.all(:conditions => "archived IS NULL OR archived = 'F'")

Ответ 5

Если вы хотите быть агностиком базы данных, вы можете сделать это в Rails 3:

Project.where("archived IS NULL OR archived = #{ActiveRecord::Base.connection.quoted_false}")