0Pricing
Ruby Academy · Pelajaran

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 save

Validasi 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
end

Format dan Panjang

Pemeriksa bawaan lainnya:

  • length: { minimum: 8 } untuk batas ukuran.
  • format: { with: /regex/ } untuk pola.
  • numericality: true untuk angka.
  • inclusion: { in: [...] } untuk nilai yang diizinkan.
class User < ApplicationRecord
  validates :password, length: { minimum: 8 }
  validates :age, numericality: { greater_than: 0 }
end

valid? 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
end

save vs save!

Dua gaya penyimpanan:

  • save mengembalikan true/false, sehingga Anda dapat menentukan cabang berdasarkan hasilnya.
  • save! menimbulkan RecordInvalid saat 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 invalid

Validasi 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
end

Membuat 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) dan offset(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.adults

Uji 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? dan errors melaporkan 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

  1. Dasar-Dasar Active Record
  2. Migrasi
  3. Asosiasi
  4. Validasi dan Kueri
← Kembali ke Ruby Academy