티스토리 뷰

MVC 모델은 Model, View, Controller를 포함하고 있고, 그 중에서 Model은 CRUD(Create, Read, Update, Delete)를 가지고 있습니다.


ex) DB의 내용을 쓰고, 읽고, 수정하고, 삭제하는 기능을 가지고 있다.


환경 : C9 ( https://ide.c9.io ) - ruby on rails


1. rails g model post를 이용해 post라는 model을 만들겠다고 선언한다.



2. db - migrate 경로의 [날짜_create_posts.rb] 파일을 볼 수가 있고, models 폴더의  post.rb 파일을 볼 수가 있습니다. migrate 폴더 아래에 위치한 [날짜_create_posts.rb] 파일은 모델을 생성하고 표현해주는 역할을 합니다.


  


3. migrate 폴더안의 파일 내부에는 DB에서 사용하려고 하는 저장할 내용의 형태와 저장할 내용의 변수를 선언할 수가 있습니다. 

회원가입을 예로 이름, 나이, 날짜, 소개글 등 문자열, 숫자(정수, 실수)가 있는데, DB에서는 Model을 사용하여 깔끔하게 나눌수가 있습니다.




4. 3번에서 저장할 내용의 형태, 변수를 적고 아래와 같은 'rake db:migrate' 과정을 필수적으로 해주어야 합니다.



5. 아래는 위에서 만든 t.string, t.integer, t.datetime에 값을 View에서 받은 입력값을 전달받아 Post라는 모델에 뿌려주는 형식입니다.

1번에서 post라는 모델을 만들었는데, 사용하고싶은 erb파일에 가서 Post(첫 번째 문자는 무조건 대문자).new를 이용해서 Post라는 DB를 하나 만들어 new_post라는 형태로 틀을 만들어 놓은 것입니다. 


이제 3번에서 생성한 name, age, date라는 변수에 값을 넣어주면 되는데, Post라고 만든 DB(new_post)에 각각의 문자, 정수열을 이용해서 각각 넣어주면 됩니다. 아래는 예시로 작성한 것이며, 실제로는 폼을 이용해 가져온 데이터를 파라미터로 작성할 수가 있습니다.



6. 위에서 작성한 것을 가지고 이제는 Post라는 DB를 모두 가져와서 사용하겠다고 @all_post라는 변수에 작성합니다.



7. 6번에서 적은 view의 list라는 html파일에 와서 DB를 반복문을 이용해 뿌려주어야 합니다. 형식은 아래와 같습니다.


<% [DB의 모든 값을 넣은 변수].each do |p|%> 의 형식을 가지고 DB안의 변수들을 출력하는 형태입니다. 간단하게 해석을 하자면, Post라는 DB에 쌓인 모든 값들을 'p'라는 변수에 each(하나씩) 넣어서 아래 각각의 인덱스에 해당하는 name, age, date 값을 가져와 출력하는 형태입니다. 이 과정은 Model -> Controller -> View 형태로 진행됩니다. 





위와 같이 MVC의 패턴을 잘 활용한다면, 어떤 서비스를 만들던 게시판을 구축할 수가 있습니다.



* 자주쓰는 명령어 


rails g model [tablename] 열이름:데이터형 열이름:데이터형...

- 테이블 생성


rake db:drop

- 현재 생성되어 있는 모든 테이블 삭제


rake db:migrate

- 마이그레이션 파일의 내용에 따라 실제 테이블을 DB에 생성


rake db:seed 

- rails가 실행되기 전에 seed.rb 파일에 저장된 명령에 따라 우선적으로 실행


-------------------------------------------------------

변수 = 테이블이름.new

변수.열이름 = 추가할 내용

변수.save


위와 아래는 같은기능


테이블이름.create(열이름:"데이터", 열이름:"데이터"....)

-------------------------------------------------------


테이블이름.all 

- 테이블의 전체 내용 확인


테이블이름.first

- 가장 먼저 저장된 행


테이블이름.last

- 가장 나중에 저장된 행


테이블이름.find(id값)

- id 값을 기준으로 행 데이터 읽기 


테이블이름.find_by_열이름(기준값) 

- 특정한 열 이름을 기준으로 행 데이터 읽기(해당 열에서 기준 값과 일치하는 행을 읽음)


테이블이름.where(열이름:값, 항목이름:값)

- 특정한 열 이름을 기준으로 여러 행 데이터 읽기(배열로 읽기가능)


댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함