## Ruby on Rails 에서 migration 활용법
table 을 만들거나 수정하는 경우 migration 파일을 이용한다. 해당 부분은 많이 찾아볼 수 있을 것이기 때문에 이 글에선 migration 시 실행하는 파일에 대해서만 알아보려고 했으나 설명하려다보니 그냥 추가하는 부분도 같이 설명해보려고 한다.
---
### attribute (column) 추가
예를 들어서 User table에 role 이라는 column 을 추가해야 할 때를 가정한다. 아래와 같이 명령어를 실행하면 db > migrate 폴더에 파일이 생성된다.
```
rails g migration add_컬럼명(column)_to_테이블명(table) 컬럼명:데이터타입
#Ex) rails g migration add_role_to_user role:integer
```
파일을 열면 아래와 같은 코드를 확인할 수 있을 것이다.
```ruby
class AddRoleToUser < ActiveRecord::Migration[6.0]
def change
add_column :users, :role, :integer
end
end
```
그리고 `rake db:migrate` 를 실행하면 User table에 role column 이 추가 된 것을 확인할 수 있다. schema.rb 파일에서 확인할 수 있다.
column을 추가는 했으나, 이미 이전에 User 데이터에는 role에 대한 값이 없는 상황이다. 직접 sql로 값을 넣는 등 여러가지 방법이 있겠지만 migration 파일로 값을 넣는 방법에 대해서 소개하려한다.
---
### migration 파일로 데이터 값 넣기
사실 대단한 것은 아니다. 그냥 migration 파일에 실행 코드를 넣으면 된다. 위와 비슷하게 먼저 migration 파일을 생성한다.
```ruby
rails g migration input_data_to_role
```
그리고 만들어진 파일에 아래와 같이 작성한다.
```ruby
class InputDataToRole < ActiveRecord::Migration[6.0]
def up
User.all.update_all(role: normal)
end
end
```
그리고 `rake db:migrate`를 하면 모든 사용자의 role이 normal로 수정되었을 것이다.
이렇게하게 되면 해당 프로젝트를 공유하던 사람들이 직접 데이터를 넣지 않아도 `rake db:migrate`로만 데이터 입력이 되서 좋다.
댓글
댓글 쓰기