ผมเขียนบทความนี้ตอนที่มาพักผ่อนที่เกาะสิมิลันกับแม่โดยแม่ผมเป็นแม่ครัวมือหนึ่งเลย หากใครจะมาเที่ยวทะเลหรือมาดำน้ำสอบถามผมได้ครับ เพราะว่าจะได้กินอาหารอร่อยๆ ฝีมือแม่ผม มาต่อกันเลยดีกว่าครับ สำหรับวันนี้ผมจะมาแนะนำการใช้งาน Scaffold ของ Rails ซึ่งถือว่าเป็นจุดเด่นของ Rails เลยก็ว่าได้เนื่องจากสามารถทำให้คุณสามารถจัดการข้อมูลแบบ CRUD หรือมาจาก C=Create, R=Read, U=Update, D=Delete โดยจะช่วยให้ชีวิตคุณง่ายขึ้นเยอะครับ แต่ใน version 2.2.2 เนี่ย scaffold จะใช้งานในรูปแบบของ REST โดย REST ผมคงจะขออธิบายในส่วนลึกอีกที่นะครับ โดยผมจะสร้าง scaffold สำหรับการจัดการ User ครับ โดยในฐานข้อมูลจะประกอบไปด้วย
Username มีชนิดเป็น String
Password มีชนิดเป็น String
Firstname มีชนิดเป็น String
Lastname มีชนิดเป็น String
Age มีชนิดเป็น Integer
Birthday มีชนิดเป็น Date
โดยผมจะยังคงใช้งานโปรแจค Hello เหมือนเดิมนะครับ เริ่มต้นกันเลยครับโดยต้องทำความเข้าใจกันก่อนนะครับว่าชนิดข้อมูลที่ใช้จะเป็นชนิดข้อมูลในการเขียนโปรแกรมทั่วไปนะครับเราไม่จำเป็นต้องทราบชนิดข้อมูลของ SQL เลยครับเพียงให้รู้ว่าเป็น String, Integer, Float, Date ที่เหลือ Rails จะมี ActiveRecord จัดการกับฐานข้อมูลให้เองครับ ให้ใช้คำสั่งในการสร้าง Scaffold ครับ
hello>ruby script/generate scaffold user username:string password:string firstname:string lastname:string age:integer birthday:date
เราจะเจอกับสิ่งที่ rails generate ออกมาให้ดังนี้ครับ
exists app/models/
exists app/controllers/
exists app/helpers/
create app/views/users
exists app/views/layouts/
exists test/functional/
exists test/unit/
exists public/stylesheets/
create app/views/users/index.html.erb
create app/views/users/show.html.erb
create app/views/users/new.html.erb
create app/views/users/edit.html.erb
create app/views/layouts/users.html.erb
create public/stylesheets/scaffold.css
create app/controllers/users_controller.rb
create test/functional/users_controller_test.rb
create app/helpers/users_helper.rb
route map.resources :users
dependency model
exists app/models/
exists test/unit/
exists test/fixtures/
create app/models/user.rb
create test/unit/user_test.rb
create test/fixtures/users.yml
create db/migrate
create db/migrate/20090312073624_create_users.rb
สิ่งที่สำคัญเลยคือดูตรง create ครับมีการสร้าง model view controller ให้อัตโนมัติรวมถึง css และ test function และจะมีการเพิ่ม route สำหรับ model นี้ด้วยครับ หลังจากนั้นให้ลองทำการ start server เพื่อลองถึงความมหัศจรรย์ครับ
hello>ruby script/server
เมื่อเราลองเข้าหน้า http://localhost:3000 เราจะพบ Mysql::Error: Table ‘hello_development.users’ doesn’t exist: SELECT * FROM `users` เนื่องจากว่าเรายังไม่ได้ทำการสร้าง Table ที่ชื่อว่า users ในฐานข้อมูลครับโดยหากเจอปัญหานี้ให้เราทำการ migrate database ก่อนโดยใช้คำสั่ง
hello>rake db:migrate
เมื่อสร้างตารางแล้วให้ start server มาเพื่อดูผลลัพธ์อีกครั้งครับ

แล้วลองเข้าไปในส่วนของ new user จะพบกับฟอร์มที่ใช้ในการสร้าง user ใหม่

หลังจากนั้นให้ทดลองเพิ่มข้อมูลไปดูครับ

เมื่อเพิ่มข้อมูลแล้วสามารถแก้ไขข้อมูลรวมถึงแสดงข้อมูลของ User ทั้งหมดได้ครับ
ดาวโหลดโค้ด hello-tutorails-4.rar
118 views

อันนี้เป็น link แก้ปัญหา Rake Abort! InnoDB disabled นะครับ
เผื่อคนลอง migrate แล้วเจอแบบผม แหะๆ
http://www.rorexperts.com/how-to-anable-innodb-in-in-phpmyadmin-t1009.html