1. 프로젝트 생성 (Create): /projects/new
라우트와 ProjectsController
의 new
액션으로 새 프로젝트 폼에 접근합니다. 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 메시지를 지워주는 편리한 기능입니다.