Bạn có thể đang học Rails & đọc rằng bạn phải tạo một „scaffold“ để khởi động ứng dụng Rails của bạn…
Dễ dàng!
Bạn có thể làm điều này dùng lệnh rails g scaffold.
Nhưng scaffolding là gì?
„Scaffolding là một cấu trúc tạm thời dùng để hỗ trợ nhóm công nhân hỗ trợ xây dựng, bảo trì và sửa chữa tòa nhà, cây cầu và tất cả các cấu trúc nhân tạo khác.“ – Wikipedia
Dịch sang Rails:
Một scaffold là một tập hợp tệp được tạo tự động hình thành cấu trúc cơ bản của dự án Rails.
Các tệp này bao gồm:
- Một controller
- Một model
- Views cho mọi action controller chuẩn (index, edit, show, new)
Một route mới.
Và một migration để chuẩn bị cơ sở dữ liệu.
Hãy xem ví dụ!
Cách Dùng Lệnh Rails Scaffold
Ví dụ scaffolding dự án cho trang web về sách trông như sau.
rails g scaffold books
Bạn sẽ thấy nhiều văn bản cuộn qua, chi tiết các tệp đang được tạo.
Ví dụ này tạo:
- Một
BooksController - Một model
Book - Một route
resources :booksmới thêm vào tệpconfig/routes.rb - Một tập tệp liên quan đến test
- Tệp view dưới
app/views/books(tổng cộng năm)
Có.
Đó là nhiều thứ lắm.
Nếu bạn muốn hoàn tác scaffolding này, ngay sau khi tạo, bạn có thể dùng lệnh sau.
rails d scaffold books
Nơi „d“ nghĩa là „destroy“.
Hãy nhớ rằng điều này SẼ XÓA các tệp được tạo bởi quá trình scaffolding.
Bây giờ:
Trước khi bạn có thể dùng code được scaffold, bạn phải chạy migration để cập nhật schema cơ sở dữ liệu.
Dùng lệnh rails db:migrate.
Nếu không có thông báo lỗi nào hiện ra, bạn đã sẵn sàng! Bạn có cấu trúc cơ bản cho ứng dụng Rails mới, hoặc cho tính năng mới cần model, view & controller tương ứng.
Tiếp theo:
Chạy rails server.
Mở trình duyệt tại localhost:3000/books & bạn nên thấy kết quả!
Rails Scaffolding Với Trường Bổ Sung
Mặc định…
Model của bạn chỉ có trường timestamp, nghĩa là thông tin duy nhất bạn có thể ghi về sách (hoặc model nào bạn đang làm việc) là thời điểm chúng được tạo, hoặc cập nhật.
Cách scaffold với trường thêm:
rails g scaffold books title:string author:string publication_year:integer
Nếu bạn tạo scaffolding như vậy, bạn sẽ có 3 trường để làm việc.
Một title, một author, và một năm xuất bản.
Đó hơi thú vị hơn chỉ có timestamp cơ sở dữ liệu.
Btw.
Đây là cùng cú pháp dùng cho tạo migration với rails g migration.
Tạo Các Thành Phần Cụ Thể
Scaffolding tạo ra thứ bạn có thể không cần hoặc muốn ngay bây giờ.
Nhưng Rails tốt bụng.
Bạn có thể tạo thành phần riêng lẻ, như controller, dùng lệnh rails g (g cho generate).
Ví dụ:
rails g controller Fruitrails g model Fruit name:string color:string(tạo model + migration)rails g migration CreateBook title:string year:integer(chỉ tạo migration)
Một trong những lợi ích lớn của dùng lệnh scaffolding là tất cả tệp được tạo dùng quy ước đặt tên đúng, tránh thông báo lỗi lạ. Nó cũng tiết kiệm việc phải thủ công tạo các tệp này.
Btw…
Xem xét xóa tệp tự động tạo mà bạn không định dùng được coi là thói quen tốt. Vì vậy sau khi dùng generator như „g controller“, hãy xem danh sách tệp tạo & xóa những cái bạn không cần.
Tóm Tắt
Bạn đã học về scaffolding trong Ruby để nhanh chóng khởi động ứng dụng Rails mới để thực hành.
Khi bạn học thêm, bạn có thể muốn bỏ scaffolding.
Nhưng bạn vẫn có thể tạo từng controller, model, hoặc tệp view khi cần.
Cảm ơn bạn đã đọc! 🙂