Jumat, 21 September 2018

Membuat Datepicker Bootstrap dan Jquery

Membuat Datepicker

Datepicker adalah alat input yang digunakan untuk tanggal dengan bentuk box
dengan desain dalam bentuk kalender.

Membuat Datepicker ada beberapa cara :
1.    Datepicker menggunakan Jquery
2.    Datepicker Bootstrap

Cara Membuat Datepicker Menggunakan Jquery

1.     Masukkan code dibawah ini didalam <head> sintak HTML.
             Code dibawah berfungsi untuk tampilan.

2.   Masukkan code dibawah ini didalam <head> sintak HTML.
       Code dibawah berfungsi untuk perintah.
       

       Untuk poin 1 dan 2 hanya memanggil secara otomatis.
       Apabila koneksi internet tidak ada, Code tersebut tidak akan berfungsi.

3.    Masukkan code dibawah ini didalam <head> sintak HTML.
        
4.    Copy code dibawah ini didalam <body> sintak HTML.
       <p>Date: <input type="text" id="datepicker"></p>

       Pada poin 3 didalam script sudah dibuat ID dengan nama "datepicker", 
        maka pada tampilan di poin 4, ID tersebut kita panggil.

5.     Tampilannya akan terlihat seperti berikut.
         

Cara Membuat Datepicker Bootstrap

1.     Masukkan code berikut pada gemfile.
gem 'bootstrap-datepicker-rails'

2.   Lalu install gem tersebut pada dengan memasukkan code dibawah pada terminal. 
   bundle install

3.     Masukkan code dibawah pada file app/assets/stylesheets/application.css 
  *= require bootstrap-datepicker
# kalau memakai bootstrap v3 pakai yang ini :
*= require bootstrap-datepicker3

4.     Masukkan code dibawah pada file app/assets/javascripts/application.js
   //= require bootstrap-datepicker 

5.     Masukkan code dibawah pada folder view didalam file yang akan memakai 
      datepicker.
     
6.     Tampilannya akan terlihat seperti berikut. 
       




Jumat, 07 September 2018

Seri Belajar Ruby on Rails Bagian 11 - Membuat Aplikasi Manajemen Tugas (Homework Management)

Hai, semangattt! ini bagian terakhir dari Seri Belajar Ruby on Rails loh, kali ini kita akan belajar membuat aplikasinya langsung. Aplikasi nya yang simple-simple aja ya kalian pasti bisa kok, apalagi kalo kalian udah baca bagian yang lain. So kita yang langsung aja ya.

Kali ini kita akan membuat aplikasi yang namanya Homework Management yaitu aplikasi yang bisa kalian gunakan untuk mengatur jadwal perkerjaan rumah guys. Berikut step-step cara pengerjaan nya :


Buat Project Baru


Buka terminal, dan jalankan code berikut:
$ rails new homework_management
$ bundle install
$ rake db:create
Setting devise untuk authentikasi (jika diperlukan)
Note: untuk setting device kalian bisa belajar disini [Link]
Contoh tampilan untuk devise


Membuat Table, Models, Views, dan Controllers

Contoh struktur table

Kita akan menggunakan 2 (dua) tabel untuk membuat aplikasi ini yaitu tabel Category dan Homework, kita akan menggunakan metode scaffold untuk mengenerate table, models, views serta controllers-nya. Berikut cara membuat schema nya :

$ rails g scaffold Category name:string
$ rails g scaffold Homework homework_name:text category:string deadline:date description:text category_id:integer
Setelah berhasil di generate jalankan migration :
$ rake db:migrate


Relasi dan Validasi

Di section ini kita akan membuat relasi dan validasi untuk tabel, relasi dan validasi ini biasa nya di simpan pada models, berikut contoh nya :





Custom Views


Karena kita telah membuat relasi otomatis kita perlu merubah tampilan CRUD yang telah tergenerate oleh scaffold tadi agar lebih optimal, seperti merubah field text menjadi select agar ada suggestion ketika membuat record yang telah terelasi.

Ubah pada bagian app/views/homeworks/_form.html.erb menjadi :


Setelah semua step sudah dikerjaan, buka terminal dan nyalakan rails server
$ rails s

Buka pada browser localhost:3000/categories untuk mengakses CRUD tabel Category dan  localhost:3000/homeworks untuk mengakses CRUD tabel Homework

Contoh tampilan Homeworks (localhost:3000/homeworks)
Contoh tampilan Categories (localhost:3000/categories)



Nah akhirnya selesai juga seri belajar kali ini, semoga bermanfaat bagi kamu yang telah mengikuti pelajaran ini dari bagian awal, sampai jumpa di seri-seri belajar yang akan datang, coming soon yaaa last but not least. Keep Shining Like Ruby :)

Download contoh aplikasi disini [Download]

Kamis, 06 September 2018

Seri Belajar Ruby on Rails Bagian 10 - Menambahkan Css dan Javascript


Hai lanjut lagi, setelah sebelumnya belajar tentang mengimplementasikan authentikasi menggunakan Devise, kali ini kita akan belajar tentang penggunaan assets untuk css dan javascript di Ruby on Rails.

Assets


Di dalam Ruby on Rails ada yang dinamakan 'Asset Pipeline', ini berguna untuk menggabungkan/mengkompres assets seperti Javascript & CSS maupun File Gambar (.jpg, .png dll). Di dalam assets ini juga kita bisa mengkombinasikan dengan fitur yang ada pada gem dengan cara memanggilnya di dalam file css atau js.

  • Stylesheets untuk folder penyimpanan file css.
  • Javascripts untuk folder penyimpanan file js.
  • Images untuk folder penyimpanan file gambar (.jpg, .png dll)

Contoh folder assets
Di dalam folder stylesheets biasanya ada file application.css yang digunakan untuk menginput/memanggil file css


Cara memanggil css dengan menambahkan *= require nama_file_css 

*= require_self digunakan bila file application.css akan digunakan untuk menuliskan code css juga.
*= require_tree . untuk memanggil semua file css yang ada di folder assets/stylesheets

    Note: adapun stub yaitu kebalikan dari require untuk excluding/membuang css ketika kita menggunakan require_tree dan suatu css tidak diperlukan, maka gunakan metode stub (Contoh: *= stub nama_file_css)

    Tidak jauh beda dengan css, penambahkan javascript biasanya diletakan di folder assets/javascripts dengan file induknya application.js

    Sama seperti css hanya saja penulisan code setelah require diganti dengan //=




    Layouts & View

    Nah setelah kita setup dibagian assets, untuk memanggil nya di view kita hanya menambahkan code berikut
    • Untuk css

      <%= stylesheet_link_tag    'application', media: 'all' %>
      


    • Untuk javascript

      <%= javascript_include_tag    'application', media: 'all' %>

    Sekian untuk pembelajaran kali ini mengenai penambahan Css dan Javascript di Ruby on Rails. Diharapkan tutorial ini menjadi salah satu pembelajaran yang mudah dimengerti bagi kita semua. Stay tune.


    Dicky Trifadillah | C-aio Indonesia

    Selasa, 24 April 2018

    Seri Belajar Ruby on Rails Bagian 9 - Membuat Autentikasi dengan Devise

    Setelah pada artikel sebelumya kita telah berhasil membuat validasi, relasi, dan menggunakan scope pada Rails, selanjutnya kita akan membuat fitur autentikasi  dengan menggunakan  Devise.

    Devise ? Untuk  apa  ?

    Devise  adalah salah satu gem pada  Rails yang berfungsi untuk menangani masalah autentika dengan mudah. Devise memiliki kelebihan sebagai  berikut.
    • Rack based
    • Lengkap dengan  Model, View, dan Cotroller
    • Megizinkan suatu aplikasi untuk memiliki multiple model untuk melakukan  autentikasi
    • Dibuat secara modularitas, sehingga memudahkan penggunaan gem ini dengan hanya menggunakan fitur/module yang dibutuhkan.
    Gem ?.  Apa itu gem ?. Pada Rails terdapat file konfigurasi yang digunakan untuk me-list gem mana saja yang diguakan. Gem ini seperti library atau perpustakaan yang biasanya dapat ditemukan di RubyGems. 

    Cara Menambahkan Gem Devise pada Rails

    Untuk menginstall devise ini dapat dilakukan dengan membuka Gemfile pada folder aplikasi. Misalnya, saya akan meggunakan devise untuk aplikasi homework_management

    Letak Gemfile pada Project
    Tambahkan script berikut pada Gemfile.
    gem 'devise'
    dan pada terminal pindah ke folder project yang digunakan, dan jalankan perintah berikut.
    bundle install

    Mengatur Gem Devise pada Project

    Jalankan perintah berikut pada terminal
    rails generate devise:install
    
    Perintah tersebut akan menghasilkan file konfigurasi pada folder config/initializers/devise.rb.

    Konfigurasi Devise

    Pastikan bahwa konfigurasi default url options pada environtments files telah dibuat. Untuk mengatur default url options, buka file environtment pada folder config/environtments/development.rb. 
    config.action_mailer.default_url_options = { host: 'localhost', port: 3000 }
    end
    
    sebelum keyword end. 

    Lalu buka file application.html.erb yang terletak pada folder app/views/layouts/ dan tambahkan baris berikut.
    tepat di atas  
    <%= yield %>

    Konfigurasi User Model

    Selajutnya  kita akan membuat user model,  dimana model ini berfungsi untuk menyimpan data-data user. Untuk pembuatan user model ini akan diintegrasikan dengan devise. Caranya  adalah  pada terminal jalankan perintah berikut.
    rails g devise user
    
    Dengan menjalankan perintah tersebut, maka akan menghasilkan file migrasi user dan model user.



    Setelah itu jangan lupa untuk menjalankan perintah 
    rake d:migrate
    
    untuk memproses file migrasi yang telah dibuat.

    Setelah melakukan generate devise maka pada file config/routes.rb akan mengalami perubahan. Perubahan tersebut adalah sebagai berikut.
    Coba jalankan perintah berikut pada terminal dan lihat url apa saja yang dihasilkan dari men-generate devise
    rake routes


    Membuat User untuk Pertama Kali

    Langkah selanjutnya, kita akan melakukan modifikasi pada view untuk menampilkan link login dan register ketika pertama kali membuka halaman http://localhost:3000/

    Untuk membuat user, jika perintah tadi telah dilakukan dengan benar maka untuk mendaftarkan user tinggal buka url http://localhost:3000/users/sign_up. Halaman tersebut adalah halaman untuk membuat/registrasi user.

    Halaman Registrasi User



    Modifikasi View


    Langkah selanjutnya, kita akan melakukan modifikasi pada view untuk menampilkan form login ketika pertama kali membuka halaman http://localhost:3000/


    Yang pertama akan kita lakukan adalah membuat navigasi yang akan muncul di setiap halaman. Navigasi ini untuk mengetahui informasi mengenai user login dan link untuk logout. Navigasi ini akan dibuat secara parsial. Perlu diingat, penamaan untuk file parsial harus diawali dengan tanda "_" (underscore).
    Lalu, pada bagian atas pada tipa view yang membutuhkan login kita tambahkan script berikut. Contohnya pada halaman tambah data homework.

    Modifikasi Controller


    Selanjutnya, kita perlu melakukan modifikasi pada controller. Yang harus dilakukan adalah tambahkan script berikut pada application_controller.rb yang terletak pada folder app/controllers.

    Sekarang coba jalankan kembali project dengan cara menjalankan perintah berikut pada terminal.

    Langkah-langkah di atas adalah salah satu cara untuk penggunaan gem devise pada project Rails. Gem "DEVISE" ini sangat berguna untuk menangani autentikasi di Rails dengan segala kemudahan yang diberikannya.

    Sekian untuk pembelajaran kali ini mengenai penggunaan "DEVISE". Diharapkan tutorial ini menjadi salah satu pembelajaran yang mudah dimengerti bagi kita semua.


    Fathara Annisa Azka | C-aio Indonesia

    Seri Belajar Ruby on Rails Bagian 8 - Membuat Validasi, Relasi dan Scope

    Pada artikel sebelumnya, kita telah mempelajari mengenai Active Record dan penggunaan Active Record pada  Rails. Sebagai contoh pada tutorial sebelumnya, kita membuat aplikasi homework management yang berfungsi untuk melakukan manajemen tugas harian sekolah ataupun tugas kuliah.

    Pada aplikasi tersebut terdapat dua buah model, yaitu category dan homework. Selain itu, pada aplikasi juga terdapat dua buah tabel, yaitu tabel categories dan tabel homeworks.

    Aplikasi ini sudah bisa melakukan CRUD. Akan tetapi, aplikasi yang dibuat masih sederhana. Misalnya saja, jika user melakukan pengisian data homework baru dan pada salah satu kolom tidak diisi, data tersebut masih bisa masuk ke dalam database. Untuk itulah dibutuhkan validasi. Terakhir kali, tampilan aplikasi yang sudah kita buat adalah sebagai berikut.



    A. VALIDASI

    Apa itu Validasi ?


    Validasi digunakan untuk memastikan hanya data yang valid yang dapat masuk ke database. Contohnya, mungkin saja penting untuk memastikan bahwa user melakukan pengisian nama kategori yang valid pada aplikasi yang dibuat.

    Pada rails, validasi dapat dilakukan dengan beberapa cara, yaitu:
    • Database constraint
      Database constraint disini maksudnya adalah pembatasan yang dilakukan pada sisi database. Contoh constraint adalah bahwa email pada tabel user haruslah bersifat unique Pada rails, validasi menggunakan database constraint dapat dilakukan di model.
    • Client-side validation
      Client-side validation adalah validasi yang dilakukan pada sisi klien. Contohnya adalah penggunaan javascript/jquery untuk memvalidasi bahwa pada kolom email harus mengandung "@" dan "."
    • Controller validation
      Controller validation, ini dilakukan pada controller, biasanya ini dilakukan sebelum pemrosesan data ke database.


    Kapan terjadinya validasi ?

    Validasi akan terjadi sebelum proses penyimpanan data ke database. Penyimpanan pada database, terbagi menjadi dua, yaitu:
    • Penyimpanan object baru 
    • Penyimpanan terhadap object yang sudah ada (update)

    Jika proses validasi menghasilkan error, maka Rails tidak akan melanjutkan proses penyimpanan data. Error ini akan menghasilkan message yang dapat ditampilkan pada view dengan menggunakan method errors.messages

    Validation Helper


    Active Record menyediakan banyak pre-defined validation helper yang dapat digunakan  langsung pada model. Setiap validasi menghasilkan false,error message yang dihasilkan akan dimasukkan ke dalam errors collection.
    • acceptance
      Method ini memvalidasi bahwa suatu checkbox dalam suatu form telah dicheck
    • validates_associated
      Helper ini dapat digunakan ketika suatu model mempunyai hubungan dengan model lainnya. Jadi helper ini akan memvalidasi model itu sendiri dan model yang berkaitan.

    • confirmation
      Helper ini dapat digunakan ketika terdapat dua text field yang harus menerima isi yang sama. Contohnya, jika pada aplikasi dibutuhkan konfirmasi sebuah email atau password. 
      Validasi ini akan membuat virtual attribute dengan nama dari field yang harus dikonfirmasi dengan kata "_confirmation" pada akhir attribut tersebut.
    • length
      Digunakan untuk memvalidasi panjang dari suatu nilai pada attribut.
    • numericality
      Digunakan untuk melakukan validasi bahwa nilai pada suatu attribut hanya memiliki numeric values
    • presence
      Helper ini digunakan untuk melakukan validasi bahwa suatu attribut harus diisi.
    • absence
      Helper ini digunakan untuk melakukan validasi bahwa suatu attribut tidak boleh diisi.
    • uniqueness
      Digunakan untuk memvalidasi bahwa suatu nilai harus bersifat unique atau tidak boleh sama
    • exclusion
    • format
    • validates_with
    • validates_each
    Validasi di Rails juga memiliki beberapa opsi/pilihan, yaitu 
    • :allow_nil
      Opsi ini mengizinkan suatu attribut bernilai nil
    • :allow_blank
      Opsi ini hampir sama dengan :allow nil, perbedaannya yaitu opsi ini memperbolehkan suatu attribut bernilai kosong. 
    • :message
      Digunakan untuk  melakukan custom message jika suatu validasi bernilai false
    • :on
      Opsi ini mengizinkan  kita untuk menentukan kapan validasi harus dilakukan. Secara default,  semua validasi dilakukan pada saat proses menyimpan, baik saat  proses create atau update.


    Conditional Validation


    Terkadang kita menginginkan suatu validasi hanya dijalankan pada saat kondisi-kondisi tertentu. Pada Rails, hal ini dapat dilakukan dengan menggunakan :if atau :unless

    Custom Validation 


    Rails memang menyediakan helper yang dapat digunakan untuk melakukan validasi. Namun ada kalanya, validasi yang diperlukan lebih complex. Untuk megatasi masalah tersebut dapat dilakukan dengan cara membuat validasi sendiri (custom).  Contohnya, jika pada suatu aplikasi, user harus memasukkan email yang valid.

    Implementasi Validasi pada Aplikasi


    Setelah mengetahui mengenai validasi pada Rails, kita coba implemetasikan pada aplikasi yang telah dibuat sebelumnya, yaitu aplikasi homework management.

    Pada aplikasi terdapat dua buah table, yaitu table homework dan category (berisi nama jadwal pelajaran). 

    Buka model category dan homework pada folder app/models.

    Pada model category, kita tambahkan validasi sebagai berikut. 

    Sedangkan pada model homework, tambahkan validasi sebagai berikut.

    Cara Menampilkan Pesan Error ketika Meggunakan Validasi 

    Di atas validasi telah dibuat, namun bagaimana caraya agar user mengetahui letak kesalahan dalam pegisian sebuah data ?. Caranya adalah tentu dengan menampilkan message error tersebut ke dalam tampilan user. Pada Rails, untuk menampilkan message error pada view (tampilan), dapat dilakukan dengan cara  berikut.

    Contohnya, kita akan menampilkan mesage error yang dihasilkan ketika melakukan penambahan data homework. Artinya, kita akan menampilkan message error ketika proses create data. Maka, yang harus dilakukan adalah buka file homework_controller pada folder app/controller.  Tambahkan script berikut.
    Pada bagian yg di dalamya terdapat form untuk menambahkan data baru, tambahkan script seperti  berikut.
    Kita coba jalankan aplikasi dengan menjalankan perintah rails s di terminal. Kita akan mencoba validasi yang telah dibuat, apakah berhasil atau tidak ?. Berikut contoh form tambah data homework.

    Form Menambahkan Data Homework
    Lalu coba tekan tombol create homework tanpa mengisi apapun.  Jika validasi berhasil dibuat, maka pada view akan muncul message seperti berikut.

    Message Error pada Halaman Tambah Data Homework

    B. Relasi

    Apa itu Relasi ?


    Pada aplikasi homework management yg telah dibuat telah dijelaskan di atas bahwa aplikasi ini memiliki dua buah tabel dan model, yaitu:

    • Tabel categories dan model category untuk menyimpan nama jadwal pelajaran
    • Tabel homeworks dan model homework untuk menyimpan data tugas

    Pada aplikasi tersebut, sistem CRUD pada data homework dan data category sudah dapat dilakukan. Berikut tampilan form untuk melakukan penambahan data homework dan data category.

    Form Menambahkan Data Homework
    Form Menambahkan Data Category

    Pada tampilan tambah data homework terdapat field category, dimana user harus mengisi sendiri nama category. Sedangkan kita sudah membuat tabel category beserta view dan sistem CRUD-nya. Lalu untuk apa ada tabel category jika kita bisa memasukkan sendiri nama categorynya ?. Untuk itulah dibutuhkan relasi agar saat memasukkan data homework, category yang dimasukkan berdasarkan data category yang sudah ada.

    Jadi kesimpulannya, relasi adalah hubungan antara dua atau lebih tabel yang sehingga memiliki keterkaitan.

    Jika kita pikirkan dari kedua tabel tersebut, maka terdapat kesimpulan jika:
    • Data homework hanya diwakili oleh satu category
    • Data category mewakili banyak data pada homework
    Lalu bagaimana cara membuat relasi ini pada Rails ?.


    Cara Mendifinisikan Relationship di Rails


    Untuk mendefinisikan relationship di Rails, kita dapat melakukannya di model. Relasi pada Rails, terdapat beberapa macam, yaitu:
    • belongs_to
      Ini seperti one-to-one. Contohnya terdapat tabel buku dan pengarang, dimana satu buku diwakili hanya oleh satu pengarang.
    • has_one
      Contohnya jika terdapat tabel supplier dimana satu supplier hanya memiliki satu account
    • has_many
      Contohnya jika terdapat tabel buku dan pengarang, dimana pengarang telah mengarang banyak buku, yang artinya pengarang bisa mewakili banyak buku yang berbeda.
    • has_many :through
    • has_one :through
    • has_and_belongs_to_many
    Pada aplikasi homework management sesuai dengan kesimpulan berikut
    • Data homework hanya diwakili oleh satu category
    • Data category mewakili banyak data pada homework
    Maka kita dapat menggunakan belongs_to pada model homework, dan has_many pada model category. Kita implementasikan pada model category seperti berikut.
    Sedangkan pada model homework, kita dapat mendefinisikan relationshipnya seperti berikut.

    Lalu kita ubah sistem input data homework pada bagian field category, sehingga category yang dimasukkan berdasarkan data category yang sudah ada. Pertama, kita ubah struktur migration homework untuk menambahkan kolom category_id dengan cara seperti berikut pada terminal.
    rails g migration AddCategoryIdToHomework
    Setelah itu buka file migrationnya pada folder db/migrate, dan tambahkan script berikut.

    Migrate migrasi dengan cara mengetikkan perintah berikut pada terminal
    rake db:migrate
    Lalu kita ubah tampilan form untuk menambahkan data atau update data homework. Sebelumnya pada field category berupa textbox, seperti berikut.
    Kita ubah pada bagian field category
    menjadi seperti berikut.
    Setelah itu, tambahkan script berikut pada homework_controller.
    Jangan lupa untuk memperhatikan param yg akan diproses untuk melakukan penambahan atau pengubahan data. Pada contoh kali ini, saya memasukkan param[:category] ketika belum  adanya relasi antara model homework dan category. Lalu tadi kita telah menambahkan kolom baru, yaitu category_id. Jadi, kita juga harus menambahkan param[:category_id]


    Bagaimana untuk Menampilkan Data yang Berelasi ?


    Untuk menampilkan data yang berelasi sesuai dengan yang sudah kita buat antara model category dan homework, bisa dilakukan dengan cara-cara berikut.

    C. Scope


    Rails menyediakan fungsi scope agar developer bisa menggunakan code secara DRY (Don't Repeat Yourself). Scope digunakan untuk memberikan nama dan condition suatu pemanggilan data. 

    Contohnya, jika pada aplikasi setiap menampilkan data category atau data homework, kita mengiginkan data tersebut untuk selalu tampil dari data terbaru.

    Penggunaan scope dapat dilakukan dengan berbagai cara
    • Default Scope
      Scope ini digunakan jika ketika melakukan pemanggilan data dalam suatu model harus selalu berdasarkan kondisi tertentu. Misalnya saja, jika data harus selalu ditampilkan menurut nama homework.
    • Menerima Argumen
      Scope juga bisa menerima argumen jika memang dibutuhkan, biasanya ini digunakan pada controller. Contohnhya saja, jika kita ingin mencari data homework yang dibuat berdasarkan waktu tertentu.
    • Menggunakan Kondisi
    • Merging Scope
    Pembahasan materi mengenai pembelajaran  validasi, relationship, serta scope di Ruby on Rails diharapkan dapat dimengerti dan  dapat  menjadi salah satu sumber pembelajaran Rails. 

    "Happy Coding!"

    Fathara Annisa Azka | C-aio Indonesia

    Minggu, 01 April 2018

    Seri Belajar Ruby on Rails Bagian 6 - Membuat Table & Dummy Data

    Setelah belajar membuat aplikasi tugas sederhana melalui scaffold, selanjutnya pada pembahasan kali ini adalah table dan dummy data. Untuk pembahasan kali ini gunakan project sebelumnya, karena kita akan melanjutkan aplikasi tersebut menjadi aplikasi yang lebih terpadu.

    A. Definisi Table di Database

    Kata database dan table sudah sering kita dengar. Database secara singkat dianalogikan seperti lemari arsip yang berfungsi untuk menyimpan data. Lalu table adalah arsip, dimana dalam arsip tersebut terdapat data-data tertentu. 


    B. Membuat Table di Rails Framework

    Rails menyediakan fitur untuk melakukan pembuatan table, penambahan kolom pada table, dsb dengan menggunakan migration. Migration di Rails disimpan dalam folder db/migrate. Untuk membuat file migrasi telah dijelaskan di Seri Belajar Ruby on Rails Bagian 5 - Membuat Aplikasi Rails Pertamamu dengan cara
    $ rails generate migration CreateCategories
    Yang akan dihasilkan oleh generator adalah file migration di folder db/migrate dengan nama create_categories.rb. Isi dari file tersebut adalah seperti berikut.


    Penjelasan:
    1. Ketika membuat migration dengan nama CreateCategories, pada file migrasi akan dibuat menjadi class dengan nama  CreateCategories.
    2. Pada bagian ActiveRecord, ini dimaksudkan bahwa migration termasuk dalam bagian ActiveRecord Rails.
    3. def change
      
      end
      Method ini harus ada sebelum menulis script untuk membuat table.
      Selain method change terdapat method lain, yaitu method up dan down. Sehingga struktur file migrasi menjadi seperti berikut. Method up dan down digunakan ketika akan melakukan perubahan pada tabel.

    4. create_table :categories do |t|
      Bagian ini artinya yang akan dilakukan adalah membuat table dengan nama categories sesuai dengan apa yang ditulis, yaitu :categories pada file migrasi. Jangan lupa akhiri dengan end.
    File migrasi kategori untuk aplikasi manajemen tugas sederhana telah selesai dibuat. Selanjutnya kita tambahkan script untuk menulis kolom-kolom yang dibutuhkan pada tabel categories beserta tipe datanya.

    Selain dengan cara tersebut, untuk menambahkan kolom pada tabel categories juga dapat dilakukan dengan cara menuliskan script berikut ketika proses membuat file migrasi. Contohnya seperti berikut.
    $ rails generate migration CreateCategories name:string


    Tips:
    Ketika melakukan pembuatan tabel, usahakan tambahkan juga kolom yang nantinya akan menjadi index pada tabel. Index ini nantinya berfungsi jika melakukan pencarian data pada tabel tersebut dapat dilakukan menjadi lebih cepat dan efisien.

    C. Migrasi di Rails yang Perlu Diketahui

    Migrasi di Rails tidak hanya untuk membuat table saja, namun juga dapat mengubah, menambahkan, atau bahkan menghapus kolom. 

    Jika pembuatan migrasi dilakukan dengan menggunakan generator, penamaan file migrasi juga dapat menjadi jalan cepat untuk mendefinisikan apa yang akan dilakukan oleh file migrasi tersebut. 

    Contohnya seperti berikut.
    1. Membuat table
      Kata kunci untuk nama file adalah CreateXXX.
      $ rails generate migration CreateCategories
      maka akan menghasilkan


    2. Menambahkan kolom ke tabel
      Kata kunci untuk nama file adalah AddXXXToXXX.
      $ rails generate migration AddDescriptionToCategories
      maka akan menghasilkan


      $ rails generate migration AddDescriptionToCategories description:text
      maka akan menghasilkan


    3. Menghapus kolom pada tabel
      Kata kunci untuk nama file adalah RemoveXXXFromXXX.
      $ rails generate migration RemoveDescriptionFromCategories
      maka akan menghasilkan


      $ rails generate migration RemoveDescriptionFromCategories description:text
      maka akan menghasilkan


    D. Tipe Data di Rails Migration

    Saat membuat file migrasi di Rails, yang harus diperhatikan adalah tipe data yang digunakan. Apakah itu string, text, atau integer, dsb. Berikut ini adalah tipe data yang diperbolehkan pada migrasi Rails.
    • :string, 
    • :text,
    • :integer, 
    • :float, 
    • :decimal, 
    • :datetime, 
    • :timestamp, 
    • :time, 
    • :date,
    • :binary, 
    • :boolean.
    Contohnya seperti gambar berikut ini yang ditunjukkan dari file migrasi homework di Seri Belajar Ruby on Rails Bagian 5 - Membuat Aplikasi Rails Pertamamu.


    E. Change Method

    Change method merupakan cara utama untuk menulis migrasi di Rails. Namun change method ini hanya bisa dilakukan pada definisi migrasi berikut.
    • add_column
    • add_foreign_key
    • add_index
    • add_reference
    • add_timestamps
    • change_column_default
    • change_column_null
    • create_join_table
    • create_table
    • disable_extension
    • drop_join_table
    • drop_table
    • enable_extension
    • remove_column
    • remove_foreign_key
    • remove_index
    • remove_reference
    • remove_timestamps
    • rename_column
    • rename_index
    • rename_table

    Berikut merupakan beberapa contoh definisi migrasi di atas.




    F. Modifiers di Rails Migration 

    Ketika melakukan perubahan kolom atau penambahan kolom, terkadang kolom tersebut membutuhkan modifier. Modifier ini berguna untuk mengatur apakah kolom tersebut boleh kosong atau tidak, apakah kolom tersebut sebagai index, apakah kolom tersebut dibatasi maksimum karakternya, dsb. Pada intinya modifier diibaratkan sebagai ketentuan yang bersifat opsional pada sebuah kolom.
    • limit: Menentukan maksimum size dari kolom string/text/binary/integer.
    • precision: Mendefinisikan presisi dari kolom desimal
    • scale: menunjukkan berapa digit yang muncul setelah tanda (,)
    • polymorphic: Menambahkan sebuah kolom untuk hubungan belongs_to (ada kaitannya dengan join)
    • null: Mengizinkan atau tidak mengizinkan suatu kolom bernilai NULL
    • default:Mengizinkan untuk memberikan nilai default pada sebuah kolom ketika kolom tersebut tidak diisi.
    • index:Menambahkan index pada suatu kolom.
    • comment: Menambahkan komentar untuk sebuah kolom.

    Setelah mengetahui beberapa hal tentang migrasi, selanjutnya yang akan dibahas adalah mengenai dummy data di Rails.

    G. Apa itu Dummy Data ?

    Dummy data  diibaratkan seperti data fake atau data palsu yang dibuat untuk tujuan melakukan testing data. Lalu, bagaimana melakukannya di Rails project ?. 

    Tujuan utama adanya Rails migration, selain untuk alter kolom dan table, migration di Rails juga berfungsi untuk menambah atau mengubah data. Untuk menambahkan data pada Rails, Rails menyediakan 'seeds' built-in yang membuat proses penambahan atau pengubahan data fake menjadi lebih cepat.

    Untuk melakukan seeding di Rails, dapat dilakukan di seeds.rb yang berada di folder db/seeds.rb. 

    Setelah itu untuk memproses seed yang sudah ditulis, lakukan dengan cara
    $ rake db:seed
    Untuk melihat apakah proses seeding berhasil, dapat dilakukan dengan mengunakan rails console.

    Rails console ini adalah tools seperti irb (interactive ruby), namun bedanya ini tidak mengeksekusi script ruby saja, bahkan script Rails pun dapat dieksekusi. Caranya dengan menjalankan perintah berikut pada terminal.
    $ rails c

    Lalu jalankan
    $ category = Category.all



    H. Seed dan Data Master

    Selain terdapat data dummy, dalam suatu database pasti terdapat data master. Apa itu data master ?. Data master diibaratkan seperti data induk dari data pada table lain. 
    Contohnya, pada jika terdapat tabel city(kota), tabel tersebut bisa menjadi data master, karena penambahan datanya hanya dilakukan sekali. Jika dilakukan proses penambahan lagi pun bisa dilakukan manual. 

    Mengapa seperti itu ?. Karena jika dipikirkan kota di Indonesia misalnya, pasti tidak akan bertambah tiap tahun bukan ?. Inilah sebabanya mengapa tabel city bisa menjadi data master.

    Untuk melakukan penambahan data master ini, banyak pengembang yang menggunakan fitur seed dari Rails, karena berpikir seed memang bertujuan untuk menambah atau mengubah data. 

    Namun, ini merupakan hal yang tidak boleh dilakukan, karena pada dasarnya seed itu fitur pada Rails yang berguna untuk membuat data fake. Data master bukanlah data fake, jadi hindari membuat data master dengan seeding.

    Kesimpulannya, Rails sangat memudahkan para penggunanya dalam banyak hal, seperti pada cara pembuatan tabel, alter table, ataupun penambahan dan pengubahan data untuk melakukan testing pada table. Namun untuk penggunaan seed, tetap perlu mengingat  konsep dari seed itu sendiri.

    Fathara Annisa Azka | C-aio Indonesia