Validasi dan Kueri
Integritas data dan pengkuerian.
Validasi dan Kueri adalah pelajaran Ruby Academy gratis di CoddyKit. Ini adalah pelajaran 4 dari 4. Kamu bisa membaca pelajaran lengkapnya di bawah secara gratis — lalu praktikkan langsung di browser dengan editor kode bawaan dan tutor AI 24/7. Ini adalah bagian dari jalur belajar Ruby Academy, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus Ruby Academy mencakup 4 pelajaran total.
Mengapa Melakukan Validasi?
Validasi melindungi data Anda sebelum data tersebut mencapai basis data. Validasi dijalankan saat Anda menyimpan sebuah rekaman dan menolak data yang tidak valid dengan pesan yang membantu.
- Validasi mencegah data buruk masuk (nama yang tidak ada, email dengan format yang salah).
- Validasi dijalankan di Ruby, sehingga pesan mudah ditampilkan kepada pengguna.
- Validasi melengkapi, bukan menggantikan, batasan basis data.
Validasi Keberadaan
Aturan yang paling umum adalah validates :field, presence: true, yang mengharuskan nilai tidak kosong. Penyimpanan tanpa nilai tersebut gagal dan mencatat kesalahan.
class User < ApplicationRecord
validates :name, presence: true
end
# User.create(name: "") fails to saveValidasi Keunikan
uniqueness: true mencegah nilai duplikat, misalnya dua pengguna dengan email yang sama. Padukan dengan indeks basis data unik karena validasi saja memiliki kondisi balapan saat konkurensi tinggi.
class User < ApplicationRecord
validates :email, presence: true, uniqueness: true
endFormat dan Panjang
Pemeriksa bawaan lainnya:
length: { minimum: 8 }untuk batas ukuran.format: { with: /regex/ }untuk pola.numericality: trueuntuk angka.inclusion: { in: [...] }untuk nilai yang diizinkan.
class User < ApplicationRecord
validates :password, length: { minimum: 8 }
validates :age, numericality: { greater_than: 0 }
endvalid? dan errors
Panggil valid? untuk menjalankan validasi tanpa menyimpan. Setelah penyimpanan gagal, record.errors berisi masalah, dan errors.full_messages memberikan teks yang mudah dibaca untuk antarmuka pengguna.
user = User.new(name: "")
if user.valid?
user.save
else
puts user.errors.full_messages
endsave vs save!
Dua gaya penyimpanan:
savemengembalikantrue/false, sehingga Anda dapat menentukan cabang berdasarkan hasilnya.save!menimbulkanRecordInvalidsaat gagal, berguna ketika data yang tidak valid harus dianggap sebagai pengecualian.
Pola yang sama berlaku untuk create/create! dan update/update!.
user.save # => false if invalid
user.save! # => raises if invalidValidasi Khusus
Untuk aturan di luar pemeriksa bawaan, tulis sebuah metode dan daftarkan dengan validate. Tambahkan masalah melalui errors.add.
class User < ApplicationRecord
validate :name_not_admin
def name_not_admin
if name == "admin"
errors.add(:name, "cannot be admin")
end
end
endMembuat Kueri dengan where
Antarmuka kueri dimulai dengan where, yang menyaring baris. Hasilnya adalah relasi tertunda yang dapat Anda rangkai lebih lanjut sebelum kueri dikirim ke basis data.
User.where(active: true)
User.where("age > ?", 18)
User.where(role: ["admin", "editor"])Pengurutan dan Pembatasan
Bentuk hasil dengan metode yang dapat dirangkai:
order(created_at: :desc)mengurutkan hasil.limit(10)danoffset(20)membagi hasil menjadi beberapa halaman.select(:id, :name)memilih kolom.
User.where(active: true)
.order(created_at: :desc)
.limit(10)Agregat dan Pemuatan Tertunda
Metode pembantu agregat menjalankan fungsi basis data: count, sum(:amount), average(:age), maximum, minimum. Relasi bersifat tertunda; kueri hanya dijalankan saat Anda menelusuri hasil, memanggil agregat, atau menggunakan to_a.
User.where(active: true).count
Order.sum(:total)
User.average(:age)Cakupan
Cakupan memberi nama pada kueri yang dapat digunakan kembali, sehingga Anda dapat menyusunnya dengan rapi. Cakupan mengembalikan relasi dan dapat dirangkai satu sama lain maupun dengan where.
class User < ApplicationRecord
scope :active, -> { where(active: true) }
scope :adults, -> { where("age >= ?", 18) }
end
User.active.adultsUji Singkat
Uji pemahaman Anda tentang validasi dan kueri.
Ringkasan: Validasi dan Kueri
Anda telah mempelajari cara melindungi dan mengambil data:
- Validasi seperti keberadaan, keunikan, panjang, dan format melindungi proses penyimpanan.
valid?danerrorsmelaporkan masalah;save!menimbulkan pengecualian.- Validasi khusus menangani aturan tertentu.
where,order,limit, agregat, dan cakupan membangun kueri tertunda.
Dengan demikian, kursus Model dan Active Record telah selesai.
Pertanyaan yang Sering Diajukan
Apakah pelajaran “Validasi dan Kueri” gratis?
Ya — teks lengkap “Validasi dan Kueri” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus Ruby Academy, upgrade ke CoddyKit PRO. Kursus Ruby Academy mencakup 4 pelajaran total.
Apa yang akan aku pelajari di “Validasi dan Kueri”?
Integritas data dan pengkuerian. Kamu berlatih Ruby Academy dengan kode praktik yang langsung kamu jalankan di browser, dan tutor AI 24/7 menjawab pertanyaanmu saat kamu mengerjakan pelajaran ini.
Apakah aku perlu pengalaman untuk memulai Ruby Academy?
Tidak diperlukan pengalaman sebelumnya. Ruby Academy di CoddyKit dirancang untuk pemula hingga pelajar tingkat lanjut, jadi kamu bisa memulai di sini atau dari awal dan belajar sesuai kecepatan kamu sendiri. Ini adalah pelajaran 4 dari 4.
Berapa lama pelajaran “Validasi dan Kueri” memakan waktu?
Sebagian besar pelajaran CoddyKit memakan waktu sekitar 5–10 menit. Setiap pelajaran ringkas dan interaktif, jadi kamu membuat kemajuan stabil dan melanjutkan dari tempat kamu tinggalkan di web dan aplikasi.
Bisakah aku menulis dan menjalankan kode dalam pelajaran Ruby Academy ini?
Ya. Setiap pelajaran Ruby Academy menyertakan editor kode bawaan, jadi kamu menulis dan menjalankan kode nyata langsung di browser dan mendapatkan umpan balik AI instan — tidak diperlukan penyiapan lokal.
Semua pelajaran dalam kursus ini
- Dasar-Dasar Active Record
- Migrasi
- Asosiasi
- Validasi dan Kueri