Реляционные операторы (>=
и <=
) выполняют тип принуждения ( ToPrimitive
), с типом подсказки Number
, все присутствующие реляционные операторы имеют такое поведение.
Вы можете увидеть внутренние детали этого процесса в . Алгоритм абстрактного реляционного сравнения .
С другой стороны, оператор Equals (==
), если операнд null
, он возвращает только true
, если другой либо null
, либо undefined
, не применяется принудительное числовое число.
null == undefined; // true
null == null; // true
Проверьте внутренние детали этого процесса в . Алгоритм абстрактного реляционного сравнения .
Рекомендуемые статьи:
Boat.where('is_docked = ? AND (dock_id IS NULL OR dock_2_id IS NULL)', 1,).select(:property_id, :player_id)
Или
class Boat < ApplicationRecord
scope :docked, -> { where('is_docked = ?', 1 }
scope :with_unassigned_dock, -> { where('dock_id IS NULL OR dock_2_id IS NULL') }
end
Boat.docked.with_unassigned_dock.select(:property_id, :player_id)