본문 바로가기

RUBY ON RAILS

Ruby, Database 입문

안녕하세요 멋사3기 Kyunni입니다.

일곱 번째 강의는 "초간단 트위터-DB입문" 수업이었습니다. 이전 포스팅의 내용들은 MVC 패턴 중, Controller와 View를 생성하고 활용하는 방법에 대해서 다루었고 이번 포스팅 부터 본격적으로 Model인 데이터베이스에 대해서 알아보도록 하겠습니다.

Database를 처음 다루는 포스팅이므로, Model을 만들고, DB를 출력하는 내용으로 진행을 하도록 하겠습니다 :)

# 프로젝트명: test, 컨트롤러명: clion, 액션명: input.erb, output.erb


Model 만들기

(Model에 관련한 자세한 설명은 Ruby on Rails의 첫 번째 포스팅인 MVC에서 살펴보면 좋을 것 같습니다.)

우선, 모델을 생성하기 위해선, 컨트롤러를  생성할 때와 마찬가지로 콘솔창에 명령어를 삽입해주면 됩니다. 참고로 저는 mlion이라는 이름의 모델을 생성하도록 하겠습니다.

내용들을 살펴보면, db/migrate/2015 ~ .rb 파일(앞으로 저희가 다룰 파일 입니다.), app/models/mlion.rb 등의 파일들이 생성되었음을 확인해볼 수 있습니다.


 db/migrate/2015 ~ .rb

Migration 파일 수정

위에서 보여드린, migration 파일을 수정하겠습니다. 생성한 모델에서 사용할 모델의 구조를 만드는 과정입니다. 한 줄의글을 DB에 저장하기 위함이므로 t.string    :content를 추가해줍니다. (string: 데이터의 형식, content: 데이터의 이름) 

이 파일을 수정한다고 해서 실제 DB에 반영이 되지는 않습니다.

string과 같은 데이터 형식에는 integer(정수), text(string보다 긴 글), date 등이 있습니다.


실제 DB에 반영

migration 파일에서 만든 DB의 구조대로 실제로 DB에 적용시키는 방법입니다. 콘솔창에 rake db:migrate라고 명령을 내려주면 됩니다. 

migrate의 반대 명령어는 drop 입니다. 생성된 전체 db 모델을 삭제하고자 할 때에는 rake db:drop이라고 명령을 내리면 됩니다. 

# rake?

rake는 make와 비슷한 기능을 가진 build 프로그램입니다. rakefile은 ruby 문법으로 완벽히 정의되어 있으므로 make와 유사하게 사용하기면 됩니다. (ruby의 파일이여서인지 조금 더 쉽게 동작하는 것 같습니다.)


input.erb

form으로 전달받은 내용은 DB에 저장하여 output.erb에 넘기도록 하겠습니다.


controller 파일 수정

data = Mlion.new : 게시글을 담으려는 새로운 Mlion을 만듭니다.(모델명을 데리고 옵니다.)

data.content = params[:article] : data에 form에서 입력받은 글을 담습니다.

data.save : save를 통해 DB에 저장합니다.

@data_text = Mlion.all DB에 존재하는 모든 Mlion을 Array 형식으로 불러와 @data_text에 저장합니다.


output.erb

게시글들이 Array의 형태로 @data_text에 저장된 상태이므로 each문을 통해 반복문으로 출력하면 됩니다.