คุณอาจกำลังเรียน Rails และอ่านว่าคุณต้องสร้าง "scaffold" เพื่อเริ่มแอปพลิเคชัน Rails ของคุณ...
ง่าย!
คุณสามารถทำได้โดยใช้คำสั่ง rails g scaffold
แต Scaffolding คืออะไร?
"Scaffolding is a temporary structure used to support a work crew to aid in the construction, maintenance and repair of buildings, bridges and all other man-made structures." — Wikipedia
แปลเป็นภาษา Rails:
Scaffold คือชุดไฟล์ที่สร้างขึ้นอัตโนมัติ ซึ่งสร้างโครงสร้างพื้นฐานของโปรเจกต์ Rails
ไฟล์เหล่านี้รวมถึง:
- คอนโทรลเลอร์ (A controller)
- โมเดล (A model)
- วิวสำหรับทุกการกระทำคอนโทรลเลอร์มาตรฐาน (index, edit, show, new)
เส้นทาง (route) ใหม่
และไมเกรชัน (migration) เพื่อเตรียมฐานข้อมูลของคุณ
มาดูตัวอย่าง!
วิธีใช้คำสั่ง Rails Scaffold
ตัวอย่างการ scaffolding โปรเจกต์สำหรับเว็บไซต์เกี่ยวกับหนังสือจะมีลักษณะแบบนี้
rails g scaffold books
คุณควรเห็นข้อความเลื่อนมามาก ซึ่งรายละเอียดไฟล์ที่ถูกสร้าง
ตัวอย่างนี้สร้าง:
BooksControllerBookmodelresources :booksroute ใหม่ เพิ่มในไฟล์config/routes.rbของคุณ- ชุดไฟล์เกี่ยวกับการทดสอบ
- ไฟล์วิวภายใต้
app/views/books(ห้าอันรวม)
ใช่
นั่นคือสิ่งมากมาย
หากคุณต้องการยกเลิก scaffolding นี้ ทันทีหลังสร้าง คุณสามารถใช้คำสั่งต่อไปนี้
rails d scaffold books
ที่ "d" หมายถึง "destroy"
จำไว้ว่า สิ่งนี้จะลบไฟล์ ที่ถูกสร้างโดยกระบวนการ scaffolding
ตอนนี้:
ก่อนที่คุณจะใช้โค้ดที่ scaffold แล้ว คุณต้องรัน migration ของคุณเพื่ออัปเดตสคีม่าฐานข้อมูล
ใช้คำสั่ง rails db:migrate
หากไม่มีข้อความข้อผิดพลาดแสดงขึ้น คุณพร้อมแล้ว! คุณมีโครงสร้างพื้นฐานสำหรับแอปพลิเคชัน Rails ใหม่ของคุณ หรือฟีเจอร์ใหม่ที่ต้องการโมเดล วิว และคอนโทรลเลอร์ที่สอดคล้อง
ต่อไป:
รัน rails server
เปิดเบราว์เซอร์ไปที่ localhost:3000/books และคุณควรจะเห็นผลลัพธ์!
Rails Scaffolding พร้อมฟิลด์เพิ่มเติม
โดยค่าเริ่มต้น...
โมเดลของคุณจะได้แค่ฟิลด์ timestamp ซึ่งหมายความว่าข้อมูลที่คุณสามารถบันทึกเกี่ยวกับหนังสือของคุณ (หรือโมเดลที่คุณทำงานอยู่) คือเวลาที่พวกมันถูกสร้าง หรืออัปเดตเท่านั้น
วิธี scaffold พร้อมฟิลด์เพิ่มเติม:
rails g scaffold books title:string author:string publication_year:integer
หากคุณสร้าง scaffolding แบบนี้ คุณจะมี 3 ฟิลด์ให้ทำงาน
ชื่อเรื่อง (title) ผู้เขียน (author) และปีพิมพ์ (publication year)
นั่นน่าสนใจกว่าการมีแค่ timestamp ของฐานข้อมูล
Btw.
นี่คือไวยากรณ์เดียวกันที่เราใช้สำหรับสร้าง migration ด้วย rails g migration
การสร้างคอมโพเนนต์เฉพาะเจาะจง
Scaffolding สร้างสิ่งที่คุณอาจไม่ต้องการหรือไม่ต้องการตอนนี้
แต Rails ดี
คุณสามารถสร้างคอมโพเนนต์แต่ละตัวได้ เช่น คอนโทรลเลอร์ โดยใช้คำสั่ง rails g (g สำหรับ generate)
ตัวอย่าง:
rails g controller Fruitrails g model Fruit name:string color:string(สร้างโมเดล + migration)rails g migration CreateBook title:string year:integer(สร้าง migration อย่างเดียว)
หนึ่งในประโยชน์ใหญ่ของการใช้คำสั่ง scaffolding คือ ไฟล์ทั้งหมดถูกสร้างโดยใช้ naming conventions ที่ถูกต้อง ซึ่งหลีกเลี่ยงข้อความข้อผิดพลาดแปลกๆ มันยังประหยัดงานที่ต้องสร้างไฟล์เหล่านี้ด้วยตนเอง
Btw...
ถือเป็นแนวทางปฏิบัติที่ดีที่จะลบไฟล์ที่สร้างอัตโนมัติที่คุณไม่วางแผนจะใช้ ดังนั้นหลังใช้ generator เช่น "g controller" ให้ตรวจสอบรายการไฟล์ที่สร้างและลบสิ่งที่คุณไม่ต้องการ
สรุป
คุณได้เรียนรู้เกี่ยวกับ scaffolding ใน Ruby แล้ว เพื่อให้คุณเริ่มแอปพลิเคชัน Rails ใหม่ได้อย่างรวดเร็วเพื่อฝึกฝน
เมื่อคุณเรียนรู้มากขึ้น คุณอาจอยากปล่อย scaffolding ไป
แตคุณยังคงสามารถสร้างคอนโทรลเลอร์ โมเดล หรือไฟล์วิวแต่ละตัวเมื่อคุณต้องการ
ขอบคุณที่อ่าน! 🙂