Tips membuat CRUD pertama di Ruby on Rails paling aman dimulai dari satu model sederhana, misalnya daftar buku atau catatan. Rails menyediakan generator yang menuliskan kerangka create, read, update, dan delete, sehingga kamu bisa fokus memahami alur MVC tanpa menulis semuanya manual sejak awal.
Pemula sering tersandung bukan pada perintah generator, tetapi pada tahap setelahnya: migrasi belum jalan, nama kolom tidak cocok, atau form mengirim parameter yang tidak dikenali controller. Bagian berikut membahas urutan yang masuk akal dan hal-hal kecil yang perlu kamu cek di tiap langkah.
Mulai dari satu model, jangan langsung banyak
Sebelum menyentuh generator, putuskan dulu data apa yang ingin disimpan. Untuk latihan, model Book dengan kolom title, author, dan year sudah cukup. Tiga kolom cukup untuk melihat bagaimana atribut mengalir dari form ke database lalu tampil lagi di halaman detail.
Hindari membuat beberapa model sekaligus di awal. Relasi antar tabel seperti has_many dan belongs_to lebih mudah dipahami setelah kamu melihat satu CRUD berjalan utuh. Kalau kamu masih perlu menyusun ulang rencana belajar, tips belajar Ruby on Rails untuk pemula di situs ini bisa jadi titik mulai yang lebih rapi.
Menjalankan generator dan membaca hasilnya
Perintah rails generate scaffold Book title:string author:string year:integer akan membuat model, migrasi, controller, view, dan entri di file routes. Setelah itu jalankan rails db:migrate supaya tabelnya benar-benar terbentuk di database.
Langkah yang paling sering dilewati pemula adalah membaca file yang dihasilkan. Buka app/controllers/books_controller.rb dan perhatikan tujuh action di dalamnya: index, show, new, create, edit, update, dan destroy. Empat di antaranya menangani data tanpa halaman sendiri, dan itu sebabnya hanya tiga view utama yang muncul di folder app/views/books.
def create
@book = Book.new(book_params)
if @book.save
redirect_to @book, notice: "Buku berhasil disimpan."
else
render :new, status: :unprocessable_entity
end
end
Perhatikan bahwa create tidak punya view. Kalau penyimpanan berhasil, Rails mengalihkan ke halaman show. Kalau gagal, dia merender ulang new supaya pesan error validasi tetap terlihat.
Memahami strong parameters
Di bagian bawah controller ada method book_params yang memakai params.require(:book).permit(:title, :author, :year). Ini bukan formalitas. Tanpa permit, Rails akan menolak parameter dari form dan kamu akan melihat error Unpermitted parameter di log.
Setiap kali kamu menambah kolom baru lewat migrasi, ingat untuk menambahkannya ke daftar permit. Banyak kasus “data tidak tersimpan” sebenarnya berawal dari kolom yang lupa didaftarkan di sini.
Menambahkan validasi di model
Form yang menerima data kosong akan lolos ke database kalau tidak ada validasi. Buka app/models/book.rb dan tambahkan aturan sederhana:
class Book < ApplicationRecord
validates :title, presence: true
validates :year, numericality: { only_integer: true, allow_blank: true }
end
Setelah validasi aktif, coba submit form dengan judul kosong. Kamu akan melihat halaman new muncul lagi lengkap dengan pesan error. Dari sini kamu bisa belajar bagaimana @book.errors dipakai di view untuk menampilkan pesan.
Validasi di model berlaku di semua jalur: lewat form, lewat console, atau lewat seed data. Menaruhnya di controller hanya melindungi satu jalur saja.
Merapikan routes dan tampilan
Scaffold menambahkan resources :books di config/routes.rb, yang otomatis membuka tujuh route standar. Kamu bisa memeriksanya dengan rails routes | grep book. Kebiasaan mengecek daftar route membantu saat tautan di view mengarah ke halaman yang salah.
Untuk tampilan, jangan buru-buru menghias. Pastikan dulu setiap tautan di index menuju show, edit, dan tombol hapus berfungsi. Tombol hapus di Rails memakai method: :delete yang dijalankan lewat JavaScript, jadi pastikan asetnya termuat. Kalau kamu memakai template pihak ketiga, sesuaikan markup form-nya agar tetap memakai helper Rails. Perbandingan opsi ada di artikel memilih template Ruby on Rails.
Kesalahan umum saat CRUD pertama
- Lupa migrasi. Generator sudah jalan tapi
rails db:migratebelum, sehingga tabel tidak ada dan muncul errorno such table. - Nama kolom tidak cocok. Kolom
yeardi migrasi tapi form mengirimpublished_year. Cek kembali nama di migrasi, form, dan daftar permit. - Edit tidak menyimpan. Sering karena strong parameters belum memuat kolom baru, bukan karena database bermasalah.
- Menghapus tanpa konfirmasi. Tambahkan
data: { turbo_confirm: "Yakin hapus?" }pada tautan hapus agar tidak terklik tidak sengaja. - Tidak membaca log. Terminal tempat
rails serverberjalan menampilkan parameter yang masuk dan query yang dijalankan. Biasakan melihatnya sebelum menebak-nebak.
Kalau pesan error yang muncul terasa asing, simpan teksnya dan telusuri satu per satu. Panduan tips debug Ruby on Rails untuk pemula membahas cara membaca stack trace tanpa panik.
Kapan sebaiknya menulis CRUD manual
Scaffold bagus untuk belajar dan prototipe cepat, tapi kode yang dihasilkan cenderung generik. Setelah kamu paham alurnya, coba hapus scaffold dan tulis ulang satu resource secara manual: buat model lewat rails generate model, tulis controller sendiri, lalu buat view dengan form_with.
Latihan menulis manual memaksa kamu memahami setiap bagian. Di sinilah kebiasaan seperti memberi nama method yang jelas dan memisahkan logika mulai terasa manfaatnya, sejalan dengan kebiasaan ngoding Ruby on Rails yang bikin kode rapi.
Kalau kamu juga mengerjakan proyek PHP di sisi lain, konsep memilih lapisan akses data mirip dengan memilih antara dua pendekatan koneksi. Ulasannya ada di memilih metode koneksi database di PHP: PDO vs MySQLi. Untuk urusan antarmuka, perbandingan efek transisi di memilih metode animasi jQuery bisa jadi acuan saat kamu ingin menambah interaksi ringan di halaman.
Ringkasan
CRUD pertama di Rails paling lancar kalau kamu mulai dari satu model, menjalankan migrasi, membaca controller hasil generator, dan menambahkan validasi di model. Tiga hal yang paling sering bikin macet adalah strong parameters, nama kolom yang tidak konsisten, dan log yang tidak dibaca. Setelah satu resource berjalan, ulangi latihan yang sama tanpa scaffold supaya pemahamanmu benar-benar menempel.
Pertanyaan yang Sering Diajukan
Apakah boleh langsung pakai scaffold untuk proyek sungguhan?
Bisa, tapi hasilnya perlu disesuaikan. Scaffold menghasilkan tampilan dan logika yang umum, jadi kamu tetap harus merapikan validasi, hak akses, dan tampilan sebelum dipakai di produksi. Untuk belajar, scaffold adalah cara cepat melihat alur MVC bekerja.
Kenapa data dari form tidak masuk ke database?
Periksa tiga hal berurutan: apakah migrasi sudah dijalankan, apakah kolom sudah didaftarkan di permit, dan apakah ada validasi yang menolak nilai tersebut. Log di terminal akan menunjukkan parameter yang diterima serta pesan validasi yang menggagalkan penyimpanan.
Berapa lama biasanya sampai paham CRUD di Rails?
Tergantung latar belakang pemrogramanmu. Kalau sudah pernah memakai framework MVC lain, satu sampai dua hari latihan cukup untuk melihat polanya. Yang menentukan bukan durasinya, tapi apakah kamu mencoba menulis ulang satu resource tanpa generator.
