루비 온 레일즈에서 migration 활용법 (How to use migration in Ruby on Rails)


## 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`로만 데이터 입력이 되서 좋다.


댓글

이 블로그의 인기 게시물

부트스트랩 사용 시 버튼 오른쪽 정렬하는 방법 (How to use float-right for right align in bootstrap)

맥(Mac)에서 MySql 사용 시 Error: Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2) 오류가 발생하는 경우 해결 방법

HTML, CSS - footer fixed (foot 하단 고정 시키기)