menu

Rails - Create table, migration, and seeder


Pada tutorial kemarin kita sudah membuat UI atau home page pada project Rails kita, pada tutorial kali ini akan membahas tentang create table, migration, dan seeder pada Ruby on Rails.

Default dari database yang digunakan pada project rails yang sedang kita buat saat ini adalah sqlite3, dengan nama development.sqlite3 yang terletak pada path db/

Oke, langsung saja kita praktekkan tutorialnya,

Pertama buat dulu modelnya pada rails, dalam hal ini kita akan membuat table users, masuk ke folder project dan ketikkan "rails generate model user" pada terminal seperti ini,


Jika sudah, maka secara otomatis file migration juga akan terbentuk dengan nama timestamp_create_users.rb pada path db/migrate/ edit file tersebut menjadi seperti ini,
class CreateUsers < ActiveRecord::Migration[5.0]
  def change
    create_table :users do |t|
     t.string :first_name
     t.string :last_name
     t.string :nick_name
     t.text :address
     t.integer :phone
     t.date :birth_date
     t.timestamps
    end
  end
end

Setelah itu, isi table users dengan beberapa field sesuai dengan requirement pada file migration yang sudah kita buat tadi dengan cara mengedit file seeds.rb pada path db/ menjadi seperti ini,
# This file should contain all the record creation needed to seed the database with its default values.
# The data can then be loaded with the rails db:seed command (or created alongside the database with db:setup).
#
# Examples:
#
#   movies = Movie.create([{ name: 'Star Wars' }, { name: 'Lord of the Rings' }])
#   Character.create(name: 'Luke', movie: movies.first)
User.create!([
  { first_name: "Monkey", last_name: "D Garp", nick_name: "Garp", address: "East Blue", phone: 8111, birth_date: DateTime.parse("01/01/1991") },
  { first_name: "John", last_name: "Wick", nick_name: "Wick", address: "New York", phone: 8112, birth_date: DateTime.parse("02/02/1992") },
  { first_name: "Dracule", last_name: "Mihawk", nick_name: "Mihawk", address: "West Blue", phone: 8113, birth_date: DateTime.parse("03/03/1993") },
])

Jika sudah, untuk melakukan migrate dan seed database pada terminal ketikkan code berikut,
rake db:migrate
rake db:seed

Sehingga akan tampak seperti gambar dibawah ini,


Jika terjadi error, lihat dibawah..

Oke, table users dan isinya sudah terbentuk, untuk menge-check-nya dapat dilakukan dengan cara berikut,
//open file
sqlite3 db/development.sqlite3

//show all table
sqlite>.tables

//show all field table
sqlite>select * from users;

//back to terminal
ctrl+c(2x type)

Jangan lupa untuk menggunakan semicolon(;) pada setiap akhir code sql.
Sehingga akan tampak seperti ini,


Untuk syntax rails yang lain bisa lihat disini, syntax ruby bisa lihat disini,


===DONE!===


why?

1. Error pada saat rake db:migrate


Ketikkan code berikut pada terminal,
gem install rubygems-bundler
gem regenerate_binstubs