Rails 애플리케이션: 프로젝트와 할 일(To-do) 연결하기

Ep 5. Connecting Projects & To-Dos | Rails New Tutorial with Typecraft

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

핵심 요약

  • 1 Rails 애플리케이션에서 프로젝트와 할 일(To-do) 모델 간의 관계를 설정하는 방법을 다룹니다.
  • 2 데이터베이스 마이그레이션, 모델 연관 관계 정의, 폼 및 뷰 업데이트, 그리고 Strong Parameters 설정을 통해 두 모델을 연결합니다.
  • 3 이를 통해 애플리케이션의 데이터 무결성을 유지하고 사용자 경험을 향상시키는 과정을 보여줍니다.

도입

이 비디오는 Rails 애플리케이션 'Doable'에서 프로젝트와 할 일(To-do) 간의 핵심적인 관계를 구축하는 과정을 상세히 설명합니다. 현재 프로젝트와 할 일이 독립적으로 생성되지만 서로 연결되어 있지 않은 문제를 해결하기 위해, 각 할 일이 특정 프로젝트에 속하도록 데이터베이스부터 모델, 뷰까지 전반적인 시스템을 업데이트하는 방법을 다룹니다. 이는 Rails의 강력한 기능과 컨벤션을 활용하여 애플리케이션의 유용성과 데이터 무결성을 향상시키는 데 중점을 둡니다.

가장 먼저, 할 일(To-do) 테이블에 프로젝트 ID를 저장하기 위한 데이터베이스 마이그레이션을 수행합니다. bin/rails generate migration AddProjectIdToTodos project:references 명령어를 사용하여 project_id 컬럼을 추가하고, null: false 옵션으로 모든 할 일이 프로젝트에 반드시 연결되도록 강제하며, 외래 키(foreign key) 제약 조건을 설정합니다. 기존 데이터베이스에 할 일이 있을 경우 발생할 수 있는 문제를 방지하기 위해 개발 모드에서는 db:drop, db:create, db:migrate를 통해 데이터베이스를 초기화하는 방법을 제시합니다.

다음으로 모델 간의 관계를 정의합니다. app/models/to_do.rb 파일에 belongs_to :project를 추가하여 할 일이 프로젝트에 속함을 명시하고, app/models/project.rb 파일에는 has_many :todos, dependent: :destroy를 추가하여 프로젝트가 여러 할 일을 가질 수 있음을 정의합니다. 특히 dependent: :destroy 옵션은 프로젝트 삭제 시 해당 프로젝트에 속한 모든 할 일도 함께 삭제되어 데이터 잔여물을 방지하는 중요한 역할을 합니다. Rails 콘솔을 통해 새로 정의된 관계가 올바르게 작동하는지 확인하기 위해 프로젝트와 할 일을 생성하고 서로 연결하는 예시를 보여줍니다.

이후 사용자 인터페이스(UI)를 업데이트합니다. 할 일 생성 폼(_form.html.erb partial)에 completed 체크박스, priority 숫자 필드, 그리고 collection_select 헬퍼를 사용하여 프로젝트를 선택할 수 있는 드롭다운 메뉴를 추가합니다. collection_select는 모든 프로젝트 레코드를 사용하여 드롭다운을 생성하며, 각 프로젝트의 name을 표시하고 선택된 프로젝트의 id를 제출 값으로 사용합니다. 이 과정에서 Action View Helpers Form Builder의 유용성을 강조하며, Rails의 컨벤션 오버 컨피규레이션(convention over configuration) 철학이 개발을 얼마나 간소화하는지 설명합니다.

폼 제출 시 발생할 수 있는 문제를 해결하기 위해 Strong Parameters의 중요성을 다룹니다. 새로운 필드(completed, priority, project_id)가 컨트롤러의 to_do_params에 추가되지 않아 데이터가 저장되지 않는 문제를 디버깅하고, 이를 통해 Rails가 보안을 위해 특정 파라미터만 허용하도록 강제하는 메커니즘을 설명합니다.

마지막으로 뷰를 업데이트하여 사용자에게 필요한 정보를 제공합니다. _to_do.html.erb partial에 할 일의 완료 상태, 우선순위, 그리고 연결된 프로젝트로 이동할 수 있는 링크를 추가합니다. 또한 project_show.html.erb 뷰를 수정하여 해당 프로젝트에 속한 모든 할 일 목록을 표시하고, 각 할 일의 완료 여부를 체크 마크로 시각화하며, 개별 할 일 페이지로 이동할 수 있는 링크를 제공합니다. 이 모든 과정을 통해 애플리케이션이 더욱 연결되고 직관적으로 작동하도록 개선합니다.

결론

본 비디오는 Rails 애플리케이션 내에서 프로젝트와 할 일 모델 간의 견고한 관계를 성공적으로 구축하는 방법을 명확하게 제시했습니다. 데이터베이스의 외래 키 설정부터 모델 간의 연관 관계 정의, 사용자 친화적인 폼 및 뷰 업데이트, 그리고 Strong Parameters를 통한 보안 강화에 이르기까지, 전체 개발 주기를 포괄적으로 다루었습니다. 이 과정을 통해 애플리케이션은 단순한 기능의 나열을 넘어, 데이터 간의 의미 있는 연결을 통해 사용자에게 훨씬 더 유용하고 직관적인 경험을 제공하게 되었습니다. 단 몇 줄의 코드로 복잡한 관계를 구현할 수 있는 Rails의 효율성과 컨벤션의 힘을 다시 한번 확인할 수 있었으며, 다음 단계에서는 Tailwind CSS를 활용하여 UI를 개선하여 사용자 경험을 더욱 향상시킬 것임을 예고합니다.

댓글 0

댓글 작성

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

아직 댓글이 없습니다

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