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로 생성됩니다.
・ 위의 사진과 같이 확인할 수 있습니다.
・ 그럼 끝!
'IT > RUBY' 카테고리의 다른 글
Visual Studio Code, 루비를 편리하게 사용하는 방법 (0) | 2019.04.11 |
---|---|
Ruby On Rails, HTTP 헤더 값을 얻는 방법 (0) | 2019.04.10 |
Ruby On Rails, 서버 강제 종료 방법 (0) | 2019.04.08 |
Ruby On Rails, Devise를 이용한 회원관리! (0) | 2019.04.05 |
Ruby, 루비 기본 문법 정리! (0) | 2019.04.05 |