ActiveRecordで条件を指定して取得したいっ!

AND

# 普通にwhereの中はAND条件
User.where(name: "hoge", age: 20)

# こちらでも同じ
User.where(name: "hoge").where(age: 20)

OR

User.where(name: "hoge").or(name: "foo")

ANDとORの組み合わせ

例えば以下のようなSQLにしたい場合

SELECT * FROM users WHERE name = "hoge" AND ( age = 20 or age = 21 )

以下のようにmergeを使う

User.where(name: "hoge").merge(
  User.where(age: 20).or(age: 21)
)

また

SELECT * FROM users name = "hoge" OR ( name = "foo" and age = 21 )

の場合は

User.where(name: "hoge").or(
  User.where(name: "foo", age: 21)
)

という感じで。

NOT

nullじゃないレコードを取得したい

User.where.not(name: nil)