การตรวจสอบความถูกต้องและคำค้น
ความถูกต้องของข้อมูลและการค้นข้อมูล
การตรวจสอบความถูกต้องและคำค้น เป็นบทเรียน Ruby Academy ฟรีบน CoddyKit นี่คือบทเรียนที่ 4 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน Ruby Academy และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส Ruby Academy มีบทเรียนทั้งหมด 4 บทเรียน
เหตุใดจึงต้องตรวจสอบความถูกต้อง
การตรวจสอบความถูกต้องช่วยปกป้องข้อมูลของคุณก่อนที่จะไปถึงฐานข้อมูล โดยจะทำงานเมื่อคุณบันทึกระเบียน และปฏิเสธข้อมูลที่ไม่ถูกต้องพร้อมข้อความที่ช่วยอธิบายปัญหา
- ช่วยป้องกันไม่ให้ข้อมูลที่ไม่ถูกต้องเข้าสู่ระบบ เช่น ชื่อที่หายไปหรืออีเมลที่มีรูปแบบไม่ถูกต้อง
- ทำงานใน Ruby จึงแสดงข้อความให้ผู้ใช้เห็นได้ง่าย
- ทำงานเสริมข้อจำกัดของฐานข้อมูล ไม่ได้ใช้แทนกัน
การตรวจสอบการมีค่า
กฎที่ใช้บ่อยที่สุดคือ validates :field, presence: true ซึ่งกำหนดให้ต้องมีค่าที่ไม่เว้นว่าง หากบันทึกโดยไม่มีค่านี้ การบันทึกจะล้มเหลวและมีการบันทึกข้อผิดพลาดไว้
class User < ApplicationRecord
validates :name, presence: true
end
# User.create(name: "") fails to saveการตรวจสอบความไม่ซ้ำ
uniqueness: true ป้องกันค่าซ้ำ เช่น ผู้ใช้สองคนที่มีอีเมลเดียวกัน ควรใช้ร่วมกับดัชนีเฉพาะในฐานข้อมูล เพราะการตรวจสอบเพียงอย่างเดียวอาจเกิดภาวะแข่งขันเมื่อมีการทำงานพร้อมกันจำนวนมาก
class User < ApplicationRecord
validates :email, presence: true, uniqueness: true
endรูปแบบและความยาว
ตัวตรวจสอบความถูกต้องอื่น ๆ ที่มีมาให้ในระบบ:
length: { minimum: 8 }สำหรับกำหนดขนาดformat: { with: /regex/ }สำหรับตรวจสอบรูปแบบnumericality: trueสำหรับตัวเลขinclusion: { in: [...] }สำหรับค่าที่อนุญาต
class User < ApplicationRecord
validates :password, length: { minimum: 8 }
validates :age, numericality: { greater_than: 0 }
endตรวจสอบความถูกต้องและ errors
เรียกใช้ valid? เพื่อตรวจสอบความถูกต้องโดยไม่ต้องบันทึก หลังจากการบันทึกล้มเหลว record.errors จะเก็บปัญหาไว้ และ errors.full_messages จะให้ข้อความที่อ่านง่ายสำหรับส่วนติดต่อผู้ใช้
user = User.new(name: "")
if user.valid?
user.save
else
puts user.errors.full_messages
endบันทึก เทียบกับ บันทึก!
รูปแบบการบันทึกมีสองแบบ:
saveคืนค่าtrue/falseคุณจึงเลือกการทำงานตามผลลัพธ์ได้save!จะยกข้อผิดพลาดRecordInvalidเมื่อทำงานล้มเหลว เหมาะเมื่อข้อมูลที่ไม่ถูกต้องควรทำให้เกิดข้อยกเว้น
รูปแบบเดียวกันนี้ใช้กับ create/create! และ update/update! ด้วย
user.save # => false if invalid
user.save! # => raises if invalidการตรวจสอบความถูกต้องแบบกำหนดเอง
สำหรับกฎที่นอกเหนือจากตัวตรวจสอบความถูกต้องที่มีมาให้ ให้เขียนเมธอดแล้วลงทะเบียนด้วย validate เพิ่มปัญหาผ่าน 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การสืบค้นด้วย where
อินเทอร์เฟซการสืบค้นเริ่มต้นด้วย where ซึ่งใช้กรองแถวข้อมูล โดยจะคืนความสัมพันธ์แบบประเมินเมื่อจำเป็น ซึ่งคุณสามารถเชื่อมต่อคำสั่งเพิ่มเติมได้ก่อนที่จะส่งคำสั่งไปยังฐานข้อมูล
User.where(active: true)
User.where("age > ?", 18)
User.where(role: ["admin", "editor"])การจัดเรียงและการจำกัด
กำหนดรูปแบบผลลัพธ์ด้วยเมธอดที่เชื่อมต่อกันได้:
order(created_at: :desc)ใช้จัดเรียงlimit(10)และoffset(20)ใช้แบ่งหน้าselect(:id, :name)ใช้เลือกคอลัมน์
User.where(active: true)
.order(created_at: :desc)
.limit(10)ฟังก์ชันรวมและการโหลดเมื่อจำเป็น
ตัวช่วยการรวมจะเรียกใช้ฟังก์ชันของฐานข้อมูล ได้แก่ count, sum(:amount), average(:age), maximum และ minimum ความสัมพันธ์จะถูกประเมินเมื่อจำเป็น โดยคำสั่งจะทำงานก็ต่อเมื่อคุณวนดูข้อมูล เรียกใช้ฟังก์ชันรวม หรือใช้ to_a
User.where(active: true).count
Order.sum(:total)
User.average(:age)ขอบเขต
ขอบเขตใช้ตั้งชื่อคำสั่งสืบค้นที่นำกลับมาใช้ซ้ำได้ เพื่อให้ประกอบคำสั่งได้อย่างเป็นระเบียบ ขอบเขตจะคืนความสัมพันธ์และสามารถเชื่อมต่อกับขอบเขตอื่น รวมถึง where ได้
class User < ApplicationRecord
scope :active, -> { where(active: true) }
scope :adults, -> { where("age >= ?", 18) }
end
User.active.adultsตรวจสอบความเข้าใจ
ทดสอบความเข้าใจเกี่ยวกับการตรวจสอบความถูกต้องและการสืบค้น
สรุป: การตรวจสอบความถูกต้องและการสืบค้น
คุณได้เรียนรู้วิธีปกป้องและเรียกใช้ข้อมูล:
- การตรวจสอบความถูกต้อง เช่น การมีค่า ความไม่ซ้ำ ความยาว และรูปแบบ ช่วยป้องกันการบันทึกข้อมูลที่ไม่ถูกต้อง
valid?และerrorsใช้รายงานปัญหา ส่วนsave!จะยกข้อผิดพลาด- การตรวจสอบความถูกต้องแบบกำหนดเองใช้รองรับกฎเฉพาะ
where,order,limit, ฟังก์ชันรวม และขอบเขต ใช้สร้างคำสั่งสืบค้นที่ประเมินเมื่อจำเป็น
บทเรียนโมเดลและ Active Record จบลงเพียงเท่านี้
เรียนรู้ Ruby ด้วย AI tutor — ฟรี
เขียนและเรียกใช้โค้ดจริงในเบราว์เซอร์ของคุณ รับความช่วยเหลือทันทีจาก AI tutor 24/7 และเรียนรู้ต่อจากที่คุณหยุดบนเว็บหรือในแอป
- คอร์ส
- 29
- บทเรียน
- 109
คำถามที่พบบ่อย
บทเรียน “การตรวจสอบความถูกต้องและคำค้น” ฟรีหรือไม่
ใช่ — ข้อความเต็มของ “การตรวจสอบความถูกต้องและคำค้น” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส Ruby Academy ให้อัปเกรดเป็น CoddyKit PRO คอร์ส Ruby Academy มีบทเรียนทั้งหมด 4 บทเรียน
คุณจะเรียนรู้อะไรในบทเรียน “การตรวจสอบความถูกต้องและคำค้น”
ความถูกต้องของข้อมูลและการค้นข้อมูล คุณปฏิบัติ Ruby Academy ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน
คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน Ruby Academy หรือไม่
ไม่จำเป็นต้องมีประสบการณ์มาก่อน Ruby Academy บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 4 จากทั้งหมด 4 บทเรียน
บทเรียน “การตรวจสอบความถูกต้องและคำค้น” ใช้เวลานานแค่ไหน
บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย
ฉันเขียนและรันโค้ดในบทเรียน Ruby Academy นี้ได้ไหม
ได้ บทเรียน Ruby Academy ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ
บทเรียนทั้งหมดในหลักสูตรนี้
- พื้นฐาน Active Record
- การย้ายโครงสร้างฐานข้อมูล
- ความสัมพันธ์
- การตรวจสอบความถูกต้องและคำค้น