Take care of difference between 'or' and 'and'.
a = User.where(phone: nil).or(User.where(phone: '')).to_sql
b = User.where(phone: [nil, '']).to_sql
a == b #=> true
a # => "SELECT `users`.* FROM `users` WHERE (`users`.`phone` = '' OR `users`.`phone` IS NULL)"
c = User.where(phone: nil).where(phone: '').to_sql
a == c #=> false
c # => "SELECT `users`.* FROM `users` WHERE `users`.`phone` = '' AND `users`.`phone` IS NULL"
Top comments (0)