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.
class CreateHomeworks < ActiveRecord::Migration[5.1]
def change
create_table :homeworks do |t|
t.text :homework_name
t.string :category
t.date :deadline
t.text :description
t.timestamps
end
end
end
Penjelasan:
- Ketika membuat migration dengan nama CreateCategories, pada file migrasi akan dibuat menjadi class dengan nama CreateCategories.
- Pada bagian ActiveRecord, ini dimaksudkan bahwa migration termasuk dalam bagian ActiveRecord Rails.
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.
class CreateCategories < ActiveRecord::Migration[5.1]def upchange_table :categories do |t|endenddef downchange_table :categories do |t|endendend
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.
class CreateCategories < ActiveRecord::Migration[5.1]
def change
create_table :categories do |t|
t.string :name #membuat kolom name dengan tipe string
end
end
end
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.
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.
- Membuat table
Kata kunci untuk nama file adalah CreateXXX.
$ rails generate migration CreateCategories
maka akan menghasilkan
- 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
- 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.
class CreateHomeworks < ActiveRecord::Migration[5.1]
def change
create_table :homeworks do |t|
t.text :homework_name
t.string :category
t.date :deadline
t.text :description
t.timestamps
end
end
end
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.
#add_column
def change
add_column :categories, :description, :text
# menambahkan kolom description pada tabel categories
end
#add_index
def change
add_index :categories, :name
#menambahkan index pada tabel categories, yaitu pada kolom name
end
#remove_column
def change
remove_column :categories, :description, :text
# menghapus kolom description pada tabel categories
end
#rename_column
def change
rename_column :categories, :description, :desc
#mengganti nama kolom description pada tabel categories menjadi desc
end
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
Tidak ada komentar:
Posting Komentar