DEV Community

n350071🇯🇵
n350071🇯🇵

Posted on • Updated on

Rails where AND, OR

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"
Enter fullscreen mode Exit fullscreen mode

Top comments (0)