본문 바로가기

RUBY ON RAILS

데이터베이스 Delete(Destroy)

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

이번 포스팅은 여덟 번째 강의인 '데이터베이스 삭제하기' 편에 관련된 포스팅입니다. 저저번 포스팅에 이어 데이터베이스에 관한 설명을 이어갑니다. 앞선 강의에서는 모델의 생성과 데이터베이스의 생성(Create), 데이터베이스 데이터 읽어오기(Retrieve)란 무엇이고, 또 어떻게 사용하는 지에 대해 학습하였다면, 오늘은 데이터베이스 삭제(Delete)를 공부해보도록 하겠습니다 :) 

# 프로젝트명: test, 컨트롤러명: clion, 액션명: write.erb, read.erb, delete.erb, 모델명: mlion 을 미리 생성해 주세요!


CRUD(Create, Retrieve, Update, Delete)

CRUD는 대부분의 컴퓨터 소프트웨어가 가지는 기본적인 데이터 처리 기능인 Create, Read(Retrieve), Update, Delete를 묶어서 일컫는 말입니다. 사용자 인터페이스가 갖추어야 할 기능(정보의 참조/검색/갱신/삭제)을 가리키는 용어로서도 사용됩니다. 

각 문자는 표준 SQL문으로도 대응이 가능합니다.

 이름

조작 

SQL 

 Create

생성 

INSERT 

Read(Retrieve)

읽기 (인출, 검색)  

SELECT 

Update 

갱신 

UPDATE 

 Delete(Destroy)

삭제 (파괴) 

DELETE 

CRUD의 네 가지 동작을 모두 할 수 있을 때, 비로소 해당 소프트웨어가 완전하다고 할 수 있습니다. 또한 이러한 동작들이 매우 기본적이므로, 한 묶음으로 설명되는 경우가 많습니다.


routes.rb 파일 편안하게 사용하기

지금까지 학습한 내용에서 보자면, 매번 액션을 추가해줄 때마다 라우트 파일을 수정해주어야 하는 번거로움이 있었습니다. 이러한 번거로움을 막고자 어떠한 액션을 추가하더라도 라우트파일을 고칠 필요가 없는 코드를 소개합니다.

물론, 보안 문제로 따지자면 이제까지 해오던 방법이 좋지만 보안 이슈는 나중에 신경쓰도록 하겠습니다.

get ":controller(/:action(/:id))"
post ":controller(/:action(/:id))"

위와 같이, 두 줄의 코드를 라우트 파일에 입력해주면, 다시는 라우트 파일을 수정할 일이 없게 됩니다. 도메인/컨트롤러/액션/id 의 형태로 도메인이 나타나는 것에 대해서는 get 방식, post 방식 모두 허용하겠다는 의미가 됩니다.


프로젝트의 전반적인 형태

앞에서 이미 설명한 내용이므로 구체적인 설명은 생략하고 소스코드만 첨부하도록 하겠습니다. 이후에 Delete 내용만 자세히 포스팅하도록 하겠습니다^^

1. 컨트롤러 파일

2. 마이그레이션 파일

3. write.erb

4. read.erb

[결과화면]


데이터 삭제하기

앞에서 이미 설명한 내용이므로 구체적인 설명은 생략하고 소스코드만 첨부하도록 하겠습니다. 이후에 Delete 내용만 자세히 포스팅하도록 하겠습니다^^

다시 한번 마이그레이션 파일을 살펴보겠습니다. 우리가 선언한 name, password, content가 데이터베이스에 각각의 테이블로 저장이 됨을 확인할 수 있습니다.

사실은 눈에는 보이지 않지만, 이외에 저장되는 몇 가지의 값이 더 있습니다. 우선, 9번째 라인에서 확인할 수 있는 timestamps입니다. 이 값은 DB가 수정되고, 사용되고 또 삭제 되는 등의 DB에 관련된 모든 성질들이 LOG의 형태로 저장이 됩니다. 

두 번째는 바로 Key 값입니다. DB에서는 id라고 불리는 이 값은 눈에는 보이지 않지만, 각각의 데이터 row에 자동으로 +1씩 증가하며 저장이 됩니다. 위의 예에서 살펴보면, kyunni는 1이라는 아이디를, doohee는 2라는 아이디값을 갖게 됩니다.


컨트롤러 파일의 15번째 줄을 살펴봅시다. params를 통해 해당 id를 받아와 one_mcontent라는 변수에 해당 데이터 row를 저장시킵니다. 그리고 destroy라는 함수를 통해 그 데이터를 삭제시키면 데이터가 삭제 됩니다. 


erb 파일에서 5번째 줄을 살펴보면, [X]라는 글자를 클릭하면 /clion/delete/해당id 로 이동하면서 데이터가 삭제되는 함수로 넘어간다고 생각하시면 될 것 같습니다.


쉽게 쓰고, 쉽게 지우기

마지막으로 전체 컨트롤러 파일을 첨부합니다. redirect_to '/' 라는 12번째 라인과 18번째 라인이 눈에 띕니다. 이는 7~11번째 라인을 수행하자마자 바로 홈화면으로 돌아가라는 뜻이고, 또 16, 17번째 라인을 수행하자마자 다시 홈으로 돌아가라는 의미가 됩니다.



'RUBY ON RAILS' 카테고리의 다른 글

데이터베이스 릴레이션  (0) 2015.07.23
데이터베이스 UPDATE  (0) 2015.07.22
TDD(테스트 주도 개발)  (0) 2015.07.21
Ruby, Database 입문  (0) 2015.07.20
Array Hash & 외부 라이브러리 사용법  (0) 2015.07.20