Ok, kembali lagi ke rails tutorial pada hari sebelumnya kita sudah belajar tentang bagaimana membuat aplikasi hello world di Rails. Pada tutorial hari ini kita bakalan belajar untuk membuat sebuah aplikasi yang akan melakukan show off dari hebatnya Rails salah satunya adalah dengan menggunakan scaffold generators dimana dengan menggunakan scaffold kita bisa menggenerate fungsi secara otomatis. Pada tutorial kali ini aplikasi tutorial yang akan kita buat akan bersisi data user daimana pada setiap user akan memiliki lebih dari satu micropost. tahap yang perlu dilakukan sama seperti tahap pembuatan aplikasi hello world ok langsung saja kita mualai genrate aplikasinya disni nama aplikasinya yang saya pake adalah Hello_scaffold dengan konfigurasi gem file sebagai berikut dan kemudian install bundler without production
konfigurasi gemfile untuk aplikasi Hello_scaffold |
setelah itu genertae aplikasi di heroku dan ubah aplikasi supaya menampilkan kata hello world dan lakukan deploy ingat tidak ada kata "terlalu dini untuk melakukan deploy" jika sudah kita akan memodelkan tabel user sepert ini
- id : integer
- name : string
- email : string
kemudian kita akan memodelkan tabel data untuk micropost seperti ini
- id : integer
- content : text
- user_id : integer
rails generate scaffold nama_tabel_atau_model atribut_1:tipedata_1 atribut_2:tipedata_2 atribut_3:tipedata_3 ... atribut_n:tipedata_n
jika sudah paham sekrang yang perlu kalian lakukan adalah melakukan generate model tersebut berikut ini commandnya jika kalian bingung dengan penjelasan diatas.rails generate scaffold User name:string email:string
jika command tersebut berhasil akan mengoutputkan seperti ini Output generate scaffold |
dengan menggunakan scaffold ketika kalian membuat tabel user kalian tidak perlu menuliskan command id yang natinya sebagai primary key karena sudah digenerate secara otomatis oleh scaffold ini, setelah berhasil menggenerate user yang perlu kalian lakukan adalah melakukan migrate database yang tujuannya adalah untuk mengupdate model ke database dengan menggunakan command .
rails db:migrate
sebelum melanjutkan tutorial ini saya akan membahas tentang rake, ketika kita menuliskan commnad db:migrate, command ini sebenarnya menggunakan rake, and then pasti kepikiran apa itu rake berikut ini adalah penjelasan panjanganya.
Jika kalian sudah berhasil membuat model user sekarang saatnya adalah melakukan explorasi dari running commad tersebut, nyalakan rails server terlebih dahulu dan masuk ke local host dengan tambahan /users maka kalian akan menemukan page seperti ini.
Hasil generate scaffold |
Menambahkan user |
ketika membuat model menggunakan rails secara otomatis Rails akan menggnerate juga fungsi CRUD(create, read, update, dan delete) untuk model yang kita buat, cobalah untuk melakukan sedikit explore fungsi-fungsi tersebut sendiri.
MVC in Action
Berikut ini adalah alurnya
- ketika kita membuka browser dan merequest halaman /user
- Rails router akan mengarahkan request ke index action yang berada pada class User controller
- Index action tersebut akan meminta User model untuk mengambil semua data user (User.all)
- kemudian user model akan melakukan pull semua data user dari database.
- user model akan mereturn semua list user ke controller.
- kemudian controller akan mengcapture user dengan menggunakan variabel
@user, yang natinya akan di pass ke index view. kemudian view akan meminta Ruby untuk merender page sebagai HTML controller akan melakukan pass HTML kembali ke browser
Mengubah main page untuk menampilkan data user |
jika kalian sudah ubah seperti screenshot diatas cobalah untuk membuka localhost:3000 maka akan menampilkan list user yang ada, pertanyaan kalian "kok bisa? kan saya belum membuat apa-apa di controller user".Ok, berikut ini penjelasannya, pada Rails controller akan dibuat secara otomatis ketika kita membuat sebuah model dengan menggunakan scaffold, yang perlu kalian ingat disini adalah UserController , adalah class yang merupakan class turunan(inheritance) dari class ApplicationController jika kalian buka class user_controller.rb maka detail isi class tersebut adalah sebagai berikut
class UsersController < ApplicationController . . . def index . . . end def show . . . end def new . . . end def edit . . . end def create . . . end def update . . . end def destroy . . . end end
jika kalian perhatikan class tersebut dengan baik, maka class tersebut bersisi method: index,show, new, edit, create, update dan destroy yang tadi sempat kita lihat di page-page user yang merupakan hasil generate, dan kerennya dengan menggunakan Rails action-action yang ada di page tersebut tidak melakukan render page meskipun sebenarnya bisa. Controller tersebut sebenarnya merepresntasikan implementasi dari Representational State Transfer pada Rails atau yang dikenal dengan nama REST, buat kalian yang belum paham mengenai REST berikut ini adalah penjelasannya.
REST sperti yang sudah disebutkan sebelumnya merupakan singkatan dari REpresentational State Transfer, dimana REST ini merupakan sebuah arsitektur untuk sistem terdistribusi seperti World Wide Web(WWW) dan aplikasi web, jika membahas mengenai REST secara teori hal tersebut sangat abstrak jadi yang akan dibahas adalah implemntasi REST pada Rails saja. Pada Rails, REST merupakan komponen aplikasi yang dimodelkan sebagai resource yang bisa dilakukan create, read, update, delete yang berkorespondensi dengan CRUD dan empat fundamental HTTP request method:POST, GET, PATCH, dan DELETE. ok demikian saja penjelasan mengenai REST di Rails.Sekarang dalah saatnya membahas sedikit mengenai HTTP request dan controller yang berkaitan dengan HTTP request pada aplikasi kita, berikut ini adalah tabelnya.
HTTP request | URL | action | fungsi |
GET | /users | index | Page untuk menampilkan list semua user |
GET | /users/1 | show | Page untuk menmpilkan user dengan id 1 |
GET | /users/new | new | Page untuk membuat user baru |
POST | /users | create | Membuat user baru |
GET | /users/1/edit | edit | Page untuk mengedit user dengan id 1 |
PATCH | /users/1 | update | Mengupdate user dengan id 1 |
DELETE | /users/1 | destroy | Menghapus user dengan id 1 |
ok demikian saja penjelasan tentang user modelnya jika merasa masih kurang kalian bisa baca ini di resource aslinya di rails tutorial chapter 2.
di bagian berikutnya kita akan membuat model untuk micropost, yang caranya sama saat pembuatan model user, generate model dengan scaffold kemudian lakukan db:migrate.Jika sudah slesai maka cobalah buka file routes.rb, maka akan ada penambahan resource :microposts pada file tersebut sperti ini
Penambahan source secara otomatis pada routes.rb |
HTTP request | URL | action | fungsi |
GET | /microposts | index | Page untuk menampilkan list semua microposts |
GET | /microposts/1 | show | Page untuk menmpilkan microposts dengan id 1 |
GET | /micropost/new | new | Page untuk membuat microposts baru |
POST | /microposts | create | Membuat microposts baru |
GET | /microposts/1/edit | edit | Page untuk mengedit microposts dengan id 1 |
PATCH | /microposts/1 | update | Mengupdate microposts dengan id 1 |
DELETE | /microposts/1 | destroy | Menghapus microposts dengan id 1 |
class microposts controller ini juga merupakan class turunan dari ApplicationController, Jika sudah sekarang cobalah tambahakan micropost dengan mengakses localhost:3000/microposts. Tambahakan daua buah micropost dengan id user yang sudah ada.
Untuk langkah selanjutnya yang akan ditambahakan adalah validasi micropost diaman micropost ini hanya dapat menerima maksimal maksimum 140 karakter saja. Dengan menggunakan Rails, memvalidasi hal tersebut sangatlah mudah dengan menggunakan length validation, untuk melakukan ini class yang perlu kita edit adalah microposts.rb yang berada para direktori model ubahlah clas tersebut menjadi seperti ini.
menambahkan validasi pada micropost |
invalid content |
asosiasi model |
hasil asosiasi |
validates :nama_atribut, jenis_validasi_1:formula,jenis_validasi_2:formula ...
setiap jenis validasi memiliki formulanya sendiri misal ketika kita menulskan validasi minimum karkter yang ditulis pada kontent adalah 15 maka kita menuliskan length: {minimum:15} jika kita menginginkan validasi supaya content yang diisi tidak boleh kosng maka kita menuliskan presence:true. Balik lagi ke topik utama kita sekarang, yaitu agar setiap atribut dari model yang kita buat tidak boleh menerima inputan kosong adalah dengan menambahkan presence yang kita tulis pada masing-masing model seperti ini.menambahkan not blank validation pada model |
output pada user |
output pada micropost |
Langkah terakhir adalah melakukan migrasi production database supaya database aplikasi yang kita buat bisa bekerja. karena sebelumnya kita menggunakan sql lite untuk melakukan development sedangkan pada environtment production menggunakan PostgreSQL beriku tini adalah commnadnya.
heroku run rails db:migrate
Jika sudah cobalah untuk membuka aplikasi yang kalian buat pada heroku. sebelum itu saya ingin memberi tahu juga jika controller user dan micropost yang sudah kita buat mereka adalah class dengan parent yang sama yaitu ApllicationController, dan model user dan micropost juga merupakan class dengan parent yang sama yaitu ApplicationRecord. dan yang perlu kalian baca adalah membaca reource aslinya di railstutorial.org chapter 2. Mungkin ada dari kalian bertanya kok ini sering banget pake screenshoot buat kodingan dikit doang sbenarnya tujuan saya biar kalian saat belajar tidak bisa copy paste syntax saja sih dan menurut saya lebih cepet doang wkwk demikian tutorial kali ini jika ada salah penjelasan pada tutorial mengenai Rails silakan balas di kolom komentar.
0 komentar:
Post a Comment