티스토리 뷰

안녕하세요 강정호입니다. 오늘은 모델, 마이그레이션, 레일즈 콘솔에 대해 공부해보겠습니다.



Active Record란 무엇인가?


Active Record : MVC에서 말하는 M에 해당하는 것. 즉 Model에 해당하는 것.


데이터베이스에 항구적으로 보존될 필요가 있는 비즈니스 객체를 편하게 생성하고 사용할 수 있게 해줍니다. Active Record는 ORM 시스템에 기술되어 있는 'Active Record 패턴'을 구현한 것입니다.



ORM 프레임워크로서의 Active Record


Active Record에는 다양한 기능이 구현되어 있으며, 그 중에서 아래에 언급한 것들이 특히 중요합니다.


1) 모델과 그의 데이터를 표현한다.

2) 모델간의 관계(Association)을 표현한다.

3) 관련된 모델을 이용해서 상속 계층을 표현한다.

4) 데이터가 데이터베이스에 저장되기 전에 검증을 수행한다.

5) 객체 지향적인 방법으로 데이터베이스를 조작한다.



Active Record 모델 만들기


Active Record 모델을 만드는 것은 무척 간단합니다. 다음과 같이 ActiveRecord::Base 클래스를 상속 받으면 됩니다.


class Product < ActiveRecord::Base
end


이 코드는 Spring 프레임워크에서 Domain 객체에 @Entity 어노테이션을 사용하는 것과 비슷합니다.



모델 클래스


모델 클래스 : 모델 클래스의 인스턴스는 레코드 1개를 나타내는 객체로 객체의 속성은 테이블의 필드를 그대로 갖게 됩니다.


액티브 레코드에서는 데이터베이스의 테이블 한 개로 모델 클래스 한 개를 생성합니다.


예를 들어 books라는 테이블이 있다면 대응되는 모델은 Book 클래스로, Book 클래스는 books 테이블 내부의 필드처럼 이름의 isbn, title, author 등의 속성을 갖게 됩니다.



마이그레이션 Migration


마이그레이션 : 한마디로 "테이블 레이아웃을 생성 또는 변경하기 위한 구조"


<마이그레이션의 예시 코드>


Rails는 테이블 생성 또는 수정에 마이그레이션(Migration)이라는 기능을 사용합니다. 마이그레이션을 사용하면 테이블 관련 작업을 반자동화할 수 있으므로 도중에 레이아웃을 변경하는 일이 발생하더라도 쉽게 반영할 수 있습니다.


명령어 : $ rails generate migration create_articles

- create_articles라는 마이그레이션을 생성한다. 이때 articles 이름으로 테이블명이 자동으로 지정이 된다.

class CreateArticles < ActiveRecord::Migration[5.2]
def change
create_table :articles do |t|
t.string :title
end
end
end




명령어 : $ rake db:migration

- 마이그레이션 파일을 실행하여 데이터베이스에 반영



명령어 : $ rake db:rollback

- 마이그레이션을 반영을 취소한다.




댓글