Ruby on Rails, Day 2 - Basic Concept

หลังจากอ่านอย่างเป็นเรื่องเป็นราวก็พอจับแนวคิดของ Rails ได้

สมัยผมเรียน โปรเจคจบผมคือทำ web-based monitoring tools ที่ชื่อ SCMSWeb โดยงานหลักคือใช้ Python เขียน CGI (ซึ่งก็ไม่ค่อยมีใครเค้าทำกัน) ส่วนงานรองก็ตกแต่งเว็บ เขียน CSS

ก็เลยรู้ซึ้งว่า การเขียน web application นั้น เอาเข้าจริงงานมันมีไม่กี่อย่าง ซ้ำๆ ซากๆ น่าเบื่อมาก และ debug ยากอีกต่างหาก

งานหลักๆ มีดังนี้

  • query ข้อมูลจาก database มายัดลงตัวแปร แล้วพิมพ์ออกมาเป็น html หรือในทางกลับกันเอาข้อมูลอยู่ในตัวแปรไปยัดคืนลง database พูดง่ายๆ ว่าเป็นการติดต่อระหว่าง CGI กับ database

    ภาษาส่วนมากมีไลบรารีสำหรับต่อ database ให้แล้ว แต่การกำหนดเงื่อนไขต่างๆ เราก็ต้องเขียน SQL query เองอยู่ดี
  • รับ-ส่งข้อมูลระหว่างฟอร์มบนเพจกับ CGI โดยใช้ GET หรือ POST พูดง่ายๆ ว่าเป็นการติดต่อระหว่างเว็บเพจกับ CGI

    อันนี้ก็เหมือนกัน ภาษาส่วนมากมี cgi interface ให้แล้ว (คือข้อมูลใน POST มันเอาลง array ให้อัตโนมัติ)​ แต่ผมก็ต้องมาระบุเองอยู่ดีว่าตัวแปรนี้เอาค่าจาก array ช่องไหน
  • และไม่ว่าเราจัดการกับข้อมูลอะไรก็ตาม มันจะต้องมีหน้าที่ไว้ลิสต์รายการ แก้ไข หรือลบข้อมูลพวกนี้อยู่เสมอ

สิ่งที่ทำให้ Rails ดัง ก็เพราะออกแบบมาจัดการกับปัญหาพวกนี้ เราจะได้เอาเวลาไปทำอย่างอื่นที่มีประโยชน์กว่า และลดปัญหาบั๊กจากอะไรที่ดูเป็น template เหล่านี้ด้วย

Active Record

คราวที่แล้วผมเขียนไว้ว่าฟีเจอร์ของ Rails ที่ประทับใจผมมาก ก็คือการแมป table ในฐานข้อมูลเข้ากับ class ในโปรแกรมของเราอัตโนมัติ ชื่อเรียกของมันคือ Active Record น่ะเอง การทำงานของมันขอยกเป็นประโยคมาดีกว่า

Active Record automatically maps tables to classes, rows to objects (instances of the model classes), and columns to object attributes.

อย่างที่เขียนไปแล้วว่ามันฉลาดมาก สามารถแมปคลาส Country กับตาราง countries หรือแม้แต่คลาส Person กับตาราง people แน่มั้ยล่ะ อันนี้ช่วยแก้ปัญหาข้อแรก

Action Pack

ทำหน้าที่จัดการกับส่วน view และ controller ให้เรา เช่น ช่วย gen URL หรือฟอร์มตาม class ที่เรากำหนดใน model อย่างอัตโนมัติ เดี๋ยวไว้เขียนเก่งๆ แล้วมาอธิบายวันหลัง แก้ไขปัญหาข้อที่สอง

Scaffolding

ในปัญหาข้อที่สาม operation พื้นฐาน 4 อย่างเค้าเรียกว่า CRUD (Create, Retrieve, Update, and Delete) การทำ Scaffold คือ Rails จะสร้างเพจที่ไว้ทำ CRUD แบบง่ายๆ ให้สำเร็จรูปโดยสิ่งที่เราต้องทำคือประกาศใช้ Scaffold บรรทัดเดียว มันสะดวกมากเมื่อต้องการให้เพจของเรามันทำงานได้ก่อน แล้วค่อยไปแต่งให้สวยทีหลัง เช่น Create แบบมี category อะไรพวกนั้น

วันนี้เอาแค่นี้ก่อน

Submitted bymarkpeakneton Sun, 02/26/2006 - 07:17

ไม่รู้ครับ (ผมไม่รู้จัก ORM ด้วยว่าคืออะไร ความรู้เขียนโปรแกรมน้อยมาก)

Submitted byWiennaton Sun, 02/26/2006 - 09:18

O/R Mapping รึเปล่า?

Submitted byplynoion Sun, 02/26/2006 - 15:45

จาก link
ActiveRecord in Ruby

มันเป็น O/R Mapping จริงๆด้วยแหะ :)


อ้อ ORM คือ An object that wraps a row in a database table or view, encapsulates the database access, and adds domain logic on that data. จาก Martin Fowler