본문 바로가기

IT/RUBY

Ruby On Rails, 테이블 생성하기

1. Ruby On Rails ActiveRecord Migration

 

Ruby on Rails Guilde를 참고하여 작성하였습니다.

 

・ Rails의 버전은 5.2.2이며, DB는 SQLite3을 사용하고 있습니다.

2. 데이터베이스에 테이블 생성하기

 

・ 마이그레이션은 db/migrate에 YYYYMMDDHHMMSS_create테이블명.rb 형태로 저장됩니다.

 

・ generate 명령어로 migrate를 만들 수 있지만, Model로 만드는 편이 다루기 편해서 주로 Model로 만듭니다.

 

rails generate model 모델 이름으로 migrate를 만들 수 있습니다.

 

C:\daily_schedule>rails generate model schedule
      invoke  active_record
      create    db/migrate/20190228145258_create_schedules.rb
      create    app/models/schedule.rb
      invoke    test_unit
      create      test/models/schedule_test.rb
      create      test/fixtures/schedules.yml

 

・ 여러 가지 파일이 생성됩니다. 그중 migration 파일에 테이블 상세 내용을 작성해보겠습니다.

 

class CreateSchedules < ActiveRecord::Migration[5.2]
  def change
    create_table :schedules do |t|
      t.timestamp :date
      t.string :content
      t.text :content_detail
      t.integer :concnetration
      t.timestamps
    end
  end
end

 

・ Model을 생성할 때는 schedule로 생성하였지만, Migrate파일은 schedules로 만들어집니다. 기본적으로 복수 형태의 이름으로 생성됩니다.

 

timestamp, string, text, integer 등의 타입으로 생성하였지만, 사실 각 데이터베이스마다 타입이 다릅니다.

 

・ 제가 사용하고 있는 SQLite3의 타입은 아래와 같습니다.

 

TYPE SQLite3
:primary_key "INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL"
:binary blob
:boolean boolean
:date date
:datetime datetime
:decimal decimal
:float float
:integer integer
:string varchar(255)
:text text
:time time
:timestamp datetime

 

Migrate파일로 타입을 결정하면, 데이터베이스에 해당하는 값으로 알아서 변환하여 데이터 타입을 정해주기 때문에 편리합니다.

 

・ 입력 후 rails db:migrate를 입력하여 DB에 반영해줍니다.

 

C:\daily_schedule>rails db:migrate
== 20190228145258 CreateSchedules: migrating ==================================
-- create_table(:schedules)
   -> 0.0040s
== 20190228145258 CreateSchedules: migrated (0.0046s) =========================

 

・ DB를 확인해보면, 설정한 것과 같이 테이블이 생성되어 있음을 확인할 수 있습니다.

 

・ 또한, Migrate를 이용하여 테이블을 만들면, 자동으로 ID라는 칼럼을 만들어주고, Primary Key로 생성됩니다.

 

 

 

・ 위의 사진과 같이 확인할 수 있습니다.

 

・ 그럼 끝!