Active Record Query Interface
Penjelasan
Active Record menyediakan query interface yang ekspresif tanpa perlu menulis SQL mentah. `Model.all` mengambil semua baris, `Model.find(id)` mengambil satu baris berdasarkan primary key (raise error kalau tidak ketemu), `Model.find_by(kolom: nilai)` mirip tapi mengembalikan `nil` kalau tidak ketemu. `where` dipakai untuk filter dan bisa dirangkai (chained) dengan method lain seperti `order`, `limit`, `first`. Karena query ini lazy (baru dieksekusi saat hasilnya benar-benar dipakai), kamu bisa menggabungkan beberapa method sebelum query sebenarnya dijalankan ke database.
Contoh Konsep
# Ambil semua catatan, urutkan dari terbaru
Catatan.all.order(created_at: :desc)
# Cari berdasarkan id (raise error kalau tidak ada)
Catatan.find(1)
# Cari berdasarkan kolom (return nil kalau tidak ada)
Catatan.find_by(judul: "Belajar Rails")
# Filter dengan where, lalu ambil 5 teratas
Catatan.where("judul LIKE ?", "%rails%").limit(5)
Praktikum
Lengkapi query untuk mengambil semua catatan yang judulnya mengandung kata "rails", diurutkan dari yang terbaru.
Ketik/edit bebas di sini untuk latihan — kode ini tidak dijalankan.
Tips
Selalu pakai placeholder `?` di `where` (bukan interpolasi string langsung) untuk mencegah SQL injection — Active Record otomatis melakukan sanitasi input lewat placeholder ini.