애플리케이션에 ‘프로젝트’ 기능을 추가하기 위해 먼저 라우팅(Routing)을 수동으로 정의합니다. config/routes.rb
파일에 get '/projects', to: 'projects#index'
와 같이 특정 URL 요청이 어떤 컨트롤러의 어떤 액션으로 매핑될지 명시합니다. 또한, :id
와 같은 동적 세그먼트를 활용하여 get '/projects/:id', to: 'projects#show', as: :project
와 같이 개별 프로젝트 상세 페이지로 연결되는 라우트도 설정합니다. 이어서 컨트롤러(Controller)를 생성합니다. bin/rails generate controller projects
명령을 통해 ProjectsController
를 만들고, index
액션에서 Project.all
을 호출하여 모든 프로젝트 데이터를 가져오며, show
액션에서는 params[:id]
를 사용하여 특정 프로젝트를 조회합니다. 여기서 params
는 URL이나 폼을 통해 전달되는 요청 데이터를 담는 특별한 객체로, Rails에서 데이터 흐름의 핵심적인 역할을 합니다. 다음으로 모델(Model)을 구축합니다. bin/rails generate model project name:string
명령을 실행하면 Project
모델과 함께 projects
테이블을 생성하고 name
컬럼을 추가하는 마이그레이션 파일이 생성됩니다. bin/rails db:migrate
를 통해 데이터베이스 스키마를 업데이트하면, Rails의 명명 규칙에 따라 Project
모델은 자동으로 projects
테이블과 연결됩니다. Rails console
을 사용하여 Project.create
와 Project.find
명령으로 실제 데이터를 생성하고 조회하며 모델의 동작을 확인합니다. 마지막으로 뷰(View)를 생성합니다. app/views/projects
디렉토리에 index.html.erb
와 show.html.erb
파일을 만들고, 컨트롤러에서 설정한 인스턴스 변수(@projects
, @project
)를 ERB(Embedded Ruby) 문법을 사용하여 HTML에 동적으로 표시합니다. 특히 <% ... %>
는 Ruby 코드를 실행하되 결과를 출력하지 않고, <%= ... %>
는 코드를 실행하고 그 결과를 HTML에 출력하는 차이점을 설명합니다. 또한, link_to
헬퍼 메서드와 project_path
와 같은 라우트 헬퍼를 활용하여 프로젝트 목록에서 개별 프로젝트 상세 페이지로 쉽게 이동할 수 있도록 링크를 구현합니다. 이 과정은 Rails가 어떻게 URL, 컨트롤러, 모델, 뷰를 유기적으로 연결하여 웹 애플리케이션을 구성하는지 명확하게 보여줍니다.
Ruby on Rails: 수동으로 프로젝트 기능 구축하기
Ep 2. Adding a Projects model | Rails New Tutorial with Typecraft
작성자
Ruby on Rails Youtube
발행일
2025년 07월 16일
핵심 요약
- 1 이 비디오는 Ruby on Rails 애플리케이션에 '프로젝트' 기능을 수동으로 추가하는 과정을 안내합니다.
- 2 Rails의 MVC 아키텍처(모델, 뷰, 컨트롤러)를 이해하고 각 구성 요소가 어떻게 상호 작용하는지 심층적으로 다룹니다.
- 3 수동 라우트 설정, 컨트롤러 액션 정의, 모델 생성 및 데이터베이스 마이그레이션, 그리고 뷰에서 데이터를 표시하는 방법을 실습합니다.
도입
본 비디오는 기존에 스캐폴딩(scaffolding) 명령어를 통해 빠르게 구축했던 To-Do 애플리케이션 'Doable'에 '프로젝트' 기능을 수동으로 추가하는 과정을 상세히 설명합니다. 이는 단순히 기능을 구현하는 것을 넘어, Rails의 핵심인 MVC(Model-View-Controller) 아키텍처의 각 구성 요소가 어떻게 유기적으로 연결되고 동작하는지를 심층적으로 이해하는 데 목적이 있습니다. 스캐폴딩이 제공하는 편리함을 넘어, 개발자가 직접 각 요소를 구축함으로써 Rails의 컨벤션(convention) 기반의 동작 원리를 명확히 파악할 수 있도록 돕습니다.
결론
이 비디오를 통해 우리는 Rails의 스캐폴딩에 의존하지 않고, 라우팅, 컨트롤러, 모델, 뷰를 수동으로 구축함으로써 Rails 프레임워크의 깊은 이해를 얻을 수 있었습니다. 특히 MVC 아키텍처 내에서 데이터가 어떻게 흐르고, `params` 객체가 동적 요청을 처리하는 데 어떻게 사용되는지, 그리고 Rails 컨벤션이 개발 효율성을 어떻게 높이는지를 실질적으로 경험했습니다. 또한, `Rails console`을 통한 데이터 조작과 `link_to`, `_path` 헬퍼를 활용한 뷰의 효율적인 구성 방법을 익혔습니다. 다음 비디오에서는 현재의 읽기 전용 기능을 넘어, 사용자가 직접 프로젝트를 생성, 업데이트, 삭제(CRUD)할 수 있는 상호작용적인 기능을 추가하여 애플리케이션의 완성도를 높일 예정입니다.