Ruby on Rails To-Do 앱에 CRUD 기능 추가하기: 프로젝트 관리

Ep 3. Adding CRUD actions | Rails New Tutorial with Typecraft

작성자
Ruby on Rails Youtube
발행일
2025년 07월 16일

핵심 요약

  • 1 본 튜토리얼은 Ruby on Rails To-Do 앱에 프로젝트 생성, 수정, 삭제 기능을 추가하는 과정을 상세히 설명합니다.
  • 2 라우트, 컨트롤러 액션, 뷰 파일, 그리고 Rails의 강력한 헬퍼 메서드를 활용하여 효율적으로 기능을 구현하는 방법을 다룹니다.
  • 3 특히 `form_with`, Strong Parameters, 모델 유효성 검사, Flash 메시지, 그리고 Partial을 통한 코드 재사용 등 Rails의 핵심 컨벤션을 배울 수 있습니다.

도입

본 튜토리얼은 Ruby on Rails 기반 To-Do 앱 'Doable'에 프로젝트 관리 기능(CRUD)을 추가하는 과정을 상세히 다룹니다. Rails의 라우팅, 컨트롤러, 뷰, 모델 간의 상호작용을 통해 효율적인 애플리케이션 개발 방법을 제시합니다.

1. 프로젝트 생성 (Create): /projects/new 라우트와 ProjectsControllernew 액션으로 새 프로젝트 폼에 접근합니다. new.html.erb 뷰에서 form_with 헬퍼를 사용하여 폼을 자동 생성하며, 이는 폼 제출 시 POST 요청을 /projects로 보냅니다. create 액션에서는 Strong Parameters(params.require().permit())를 활용하여 보안을 유지하며 데이터를 처리하고, 저장 성공 시 리다이렉트, 실패 시 폼 재렌더링 및 오류를 표시합니다.

2. 유효성 검사 (Validations): Project 모델에 validates :name, presence: true를 추가하여 데이터 무결성을 확보합니다. Rails는 유효성 검사 실패 시 자동으로 오류 메시지를 생성하며, 뷰에 이를 표시하고 HTTP 422 상태 코드를 반환합니다.

3. 프로젝트 수정 (Update): /projects/:id/edit 라우트와 edit 액션으로 기존 프로젝트 수정 폼에 접근합니다. edit.html.erb 뷰는 생성 폼과 동일한 form_with를 재사용하며, Rails는 기존 레코드임을 인지하여 지능적으로 폼을 구성합니다. 수정 폼 제출은 PATCH 요청(patch '/projects/:id')으로 update 액션에 연결되어 데이터를 갱신합니다.

4. 프로젝트 삭제 (Delete): delete '/projects/:id' 라우트와 destroy 액션을 통해 프로젝트를 삭제합니다. destroy 액션은 데이터베이스에서 해당 프로젝트를 삭제하고, 모든 프로젝트 목록 페이지로 리다이렉트합니다.

5. 코드 재사용 및 컨벤션: DRY(Don’t Repeat Yourself) 원칙을 위해 중복되는 폼 코드를 _form.html.erb Partial로 분리하여 재사용성을 높입니다. 또한, config/routes.rb에서 resources :projects 한 줄로 CRUD 관련 7가지 표준 라우트를 자동 생성하여 라우팅 설정을 간소화하는 Rails의 강력한 컨벤션을 활용합니다.

6. 사용자 피드백 (Flash Messages): 프로젝트 생성 및 수정 성공 시 사용자에게 시각적 피드백을 제공하기 위해 Flash 메시지를 사용합니다. 컨트롤러에서 flash.notice를 설정하면 application.html.erb와 같은 레이아웃 파일에 해당 메시지가 일시적으로 표시되어 사용자 경험을 향상시킵니다. 이는 Rails가 다음 요청에서 자동으로 Flash 메시지를 지워주는 편리한 기능입니다.

결론

이 튜토리얼을 통해 Rails 애플리케이션에서 CRUD 기능을 구현하는 핵심 방법론을 습득했습니다. 라우팅, 컨트롤러, 뷰, 모델 간의 상호작용 및 `form_with`, Strong Parameters, 유효성 검사, Flash 메시지, Partial, `resources` 헬퍼와 같은 Rails 기능 활용법을 익혔습니다. 이는 Rails 개발자처럼 생각하고 컨벤션을 따르는 것이 코드 효율성과 유지보수성을 극대화하는 중요한 학습 경험이었습니다.

댓글 0

댓글 작성

0/1000
정중하고 건설적인 댓글을 작성해 주세요.

아직 댓글이 없습니다

첫 번째 댓글을 작성해보세요!