Selasa, 16 Maret 2021

Seri Belajar Ruby on Rails Bagian 7 - Memahami ActiveRecord

Setelah sebelumnya telah memahami penggunaan migration, seed, dan cara membuat dummy data, serta perbadaan data dummy dan data master. Pada kali ini kita akan memahami mengenai Active Record.

Active Record adalah library-library ORM yang digunakan pada model di Rails Framework. Model ini yang merupakan M dari konsep MVC pada Rails. Ia bertugas sebagai model yang bertanggungjawab atas data bisnis dan logika. Contoh dari data bisnis ini seperti data orang, data tempat, atau data barang.

Active Record ini jika diimplementasikan merupakan sistem ORM (Object Relational Mapping) pada Rails.

A. Definisi ORM

ORM (Object Relational Mapping) adalah suatu metode/teknik pemrograman yang digunakan untuk mengkonversi data dari lingkungan bahasa pemrograman berorientasi objek (OOP) dengan lingkungan database relasional. 

Secara singkat ORM dapat dikatakan sebagai jembatan yang berfungsi untuk menghubungkan antara OOP dan database relasional.

B. Apa yang Dapat Dilakukan Active Record ?

Active record memiliki kemampuan untuk
  • Merepresentasikan model dan data dari model tersebut.
  • Merepresentasikan hubungan antar model.
  • Menunjukkan hirarki pewarisan dari model yang berelasi.
  • Melakukan validasi data sdebelum data tersebut dimasukkan ke dalam database.
  • Menampilkan operasi database dalam bentuk OOP.

C. Ketentuan Penamaan

Secara default, Active Record memerlukan ketentuan penemaan untuk menentukan mapping dari model dan tabel. Contoh penamaan antara model dan tabel di Rails adalah sebagai berikut. Contoh ini berdasarkan aplikasi yang kita buat dari modul Bagian 5 - Membuat Aplikasi Rails Pertamamu, yaitu aplikasi manajemen tugas sederhana.

Model/Class Table/Schema
Category categories
Homework homeworks

Dari tabel dapt kita ketahui bahwa penamaan dari model dan tabel memiliki aturan  sebagai berikut.
  • Database Table - Ditulis secara plural, jika lebih dari dua kata dipisahkan dengan underscore.
    Contoh
    : homeworks, categories, homework_item
  • Model Class - Ditulis secara singular dengan setiap huruf pertama dari setiap kata menggunakan uppercase
    C
    ontoh: Homeworks, Category, HomeworkItem
Untuk membuat model dan tabel dengan ketentuan penamaan yang benar secara cepat dapat menggunakan generator dengan cara
$ rails generate model Homework

D. Ketentuan Penamaan Schema

Active Record juga menggunakan ketentuan penamaan untuk kolom pada tabel yang digunakan sesuai dengan kegunaan dari kolom tersebut. Ketentuan tersebut adalah sebagai berikut.
  • Foreign keys - Field ini harus diberi nama sesuai dengan nama tabel yag digunakan. Contohnya  item_id, order_id. Field ini akan otomatis dibuat oleh Active Record ketika menentukan hubungan atau relasi antar model.
  • Primary keys - Secara default, Active Record akan menggunakan sebuah kolom integer yang diberi nama id sebagai primary key. Ketika menggunakan Active Record, kolom ini otomatis akan terbuat.

Untuk contoh pemakaian Active Record, kita akan melanjutkan mengerjakan aplikasi manajemen tugas sederhana. Jika sebelumnya kita membuat sistem CRUD menggunakan scaffold, kali ini kita akan membuat sistem CRUD untuk kategori tugas harian tanpa menggunakan scaffold.


E. CRUD menggunakan Active Record tanpa Scaffold

Pada tutorial sebelumnya telah ditunjukkan cara membuat tabel category yang hanya membutuhkan kolom category_namenya saja dengan menggunakan generator. Bagi yang belum tahu bagaimana caranya, lakukan perintah berikut pada terminal.
$ rails generate migration CreateCategories
  1. Karena pada tutorial sebelumnya penggunaan generator hanya untuk membuat migration, maka untuk membuat modelnya akan dilakukan secara manual dengan cara berikut.
    • Buat file baru pada folder app/models dengan nama category.rb, lalu isi script berikut.Ini akan menunjukkan bahwa model Category akan merujuk kepada tabel categories.
  2. Setelah itu, buatlah controller dengan nama categories_controller.rb dan isi dengan script berikut.
  3. Lalu pada routes.rb tambahkan script berikut.Pada script di atas, kita mendaftarkan semua method dari categories_controller.rb menjadi sebuah resource.
Create pada Active Record
Selanjutnya untuk membuat sistem create atau tambah data yang akan kita lakukan adalah
  1. Buat folder pada app/views dengan nama categories dan buat file dengan nama new.html.erb dan _form.html.erb di dalam folder yang telah dibuat.

    Catatan:
    File _form.html.erb kita jadikan parsial. Pada Rails untuk penamaan file parsial harus diawali dengan tanda underscore.

  2. Coba jalankan server dengan menjalankan perintah
    $ rails s
    dan buka url http://localhost:3000/categories/new. Halaman tersebut masih berupa halaman kosong.
  3. Pada file categories_controller.rb tambahkan script berikut.
  4. Pada file _form.html.erb tambahkan script berikut.
  5. Tambahkan script pada file new.html.erb seperti berikut.
Step-step di atas hanya menghasilkan halaman tambah kategori. Coba jalankan kembali url http://localhost:3000/categories/new. Jika step-step di atas dilakukan dengan benar, maka tampilan dari halaman tambah data kategori akan muncul seperti berikut.

Setelah membuat proses untuk menampilkan halaman baru, yang akan kita lakukan selanjutnya adalah untuk membuat proses menyimpan data yang dimasukkan dari halam tersebut.
  1. Pada method create di categories_controller.rb tambahkan script berikut.
    Berikut ini merupakan penjelasan dari script tersebut:
    @category = Category.new(params.require(:category).permit(:name))
    
    Penjelasan:
    • Melakukan instansiasi terhadap model Category, dimana untuk melakukan instansiasi ini memerlukan parameter category.
    • Parameter ini terdapat pada form di new.html.erb. Dan data yang diperbolehkan adalah data name saja.
    respond_to do |format| 
      if @category.save
        format.html { redirect_to "/categories/new", notice: "Category was successfully created." }
      else
        format.html { redirect_to "/categories/new", notice: "Category wasm't successfully created." }
      end
    end
    
    Penjelasan:
    • respond_to do berguna untuk mengeksekusi perintah menyimpan data menggunakan web-service support. Tag ini berguna untuk menampilkan hasil respon dalam format html.
    • Jika data yang ditampung oleh variable @category berhasil disimpan, maka menampilkan text berupa nama kategori berhasil ditambahkan dan kembali ke halaman tambah data
    • JIka tidak berhasil disimpan, akan menampilkan text bahwa nama kategori tersebut tidak berhasil ditambahkan dan kembali ke halaman tambah data.
    Kita lakukan testing, kita coba masukkan data fisika pada text field, seperti berikut.

    Coba klik pada button create category. Jika data berhasil disimpan, maka pada tampilan akan muncul seperti berikut.

Read pada Active Record
Selanjutnya untuk membuat sistem menampilkan semua data kategori yang telah dimasukkan, yang akan kita lakukan adalah
  1. Buat file dengan nama index.html.erb di dalam folder app/views/categories.
  2. Coba jalankan server dengan menjalankan perintah
    $ rails s
    dan buka url http://localhost:3000/categories. Halaman tersebut masih berupa halaman kosong.
  3. Pada file index.html.erb tambahkan script berikut. 
  4. Lalu jalankan kembali url http://localhost:3000/categories di browser. Maka pada halaman tersebut tampilan yang akan muncul adalah sebagai berikut.

    Masih ingat pada modul sebelumnya, yaitu Bagian 6 - Membuat Table & Dummy Data kita melakukan penambahan data pada tabel kategori melalui seeding di Rails. Data tersebut terdiri dari Matematika, Sejarah, Bahasa Indonesia, Bahasa Inggris, Bahasa Jepang, Agama, Kimia, dan Biologi.

    Sedangkan Fisika adalah data yang ditambahkan melalui form.

Yang kita lakukan barulah menampilkan semua data kategori, lalu bagaimana jika kita ingin menampilkan data kategori yang spesifik. Langkah yang dilakukan, yaitu:
  1. Buat file dengan nama show.html.erb di dalam folder app/views/categories. Tambahkan script berikut.
  2. Pada categories_controller.rb method show, tambahkan script berikut.
  3. Coba jalankan server dengan menjalankan perintah
    $ rails s
    dan buka url http://localhost:3000/categories dan klik link show pada salah satu data. Maka pada halaman tersebut tampilan yang akan muncul adalah sebagai berikut



Update pada Active Record
Selanjutnya untuk membuat sistem ubah data kategori yang akan kita lakukan adalah
  1. Buat file dengan nama edit.html.erb di dalam folder app/views/categories. Tambahkan script berikut.
  2. Pada categories_controller.rb method edit, tambahkan script berikut.
  3. Coba jalankan server dengan menjalankan perintah
    $ rails s
    dan buka url http://localhost:3000/categories dan klik link edit pada salah satu data. Maka pada halaman tersebut tampilan yang akan muncul adalah sebagai berikut

    Kita baru sampai pada step menampilkan tampilan ubah data. Selanjutnya kita tambahkan script untuk melakukan proses pengubahan data.

    Pada categories_controller.rb method update, tambahkan script berikut.
    Sekarang coba lakukan pengubahan data pada halaman ubah data. Jika melakukan step dengan benar, pasti data akan berhasil diubah.
Selanjutnya, kita akan membuat proses untuk melakukan penghapusan data. Yang harus dilakukan adalah sebagai berikut.

Delete pada Active Record
Selanjutnya untuk membuat sistem ubah data kategori yang akan kita lakukan adalah
  1. Pada categories_controller.rb method destroy, tambahkan script berikut.
  2. Coba jalankan server dengan menjalankan perintah
    $ rails s
    dan buka url http://localhost:3000/categories dan klik link destroy pada salah satu data. Maka pada halaman tersebut tampilan yang akan muncul pop-up berupa konfirmasi penghapusan data sebagai berikut


    Jika kita menekan button OK, maka data akan terhapus dan kembali ke halaman sebelumnya.
Fathara Annisa Azka | C-aio Indonesia

3 komentar:

  1. Komentar ini telah dihapus oleh administrator blog.

    BalasHapus
  2. Kak, bagaimana cara untuk membuat rute dengan menginput lokasi awal dan lokasi tujuan. Dan keluarannya dalam bentuk text.

    BalasHapus