Rails에서의 MVC 구조 진짜 제대로 파보기

2025. 7. 8. 09:00·Ruby On Rails
728x90
반응형

Ruby on Rails는 “Convention over Configuration(관례 우선)”이라는 철학 아래 매우 강력한 구조를 제공합니다. 그 구조의 중심에는 바로 MVC, 즉 Model - View - Controller가 있죠. 처음에는 낯설게 느껴질 수 있지만, MVC를 제대로 이해하면 Rails가 왜 생산성이 좋은지, 왜 아름답다고 불리는지를 실감하게 될 거예요.


🎭 MVC란 무엇인가요?

MVC는 웹 애플리케이션을 세 가지 책임 영역으로 분리하는 아키텍처 패턴입니다.

  • Model: 데이터와 비즈니스 로직
  • View: 사용자에게 보여지는 화면
  • Controller: 요청을 받아 처리하고 Model과 View를 연결

이 세 가지가 서로 협력하면서 하나의 요청/응답 사이클을 완성하게 됩니다.


📦 Rails의 MVC 흐름

  1. 사용자가 /posts로 GET 요청을 보냅니다.
  2. 이 요청은 routes.rb에 정의된 대로 PostsController#index로 연결됩니다.
  3. PostsController는 Post.all을 통해 모델에서 데이터를 가져옵니다.
  4. 가져온 데이터를 app/views/posts/index.html.erb 뷰에 넘깁니다.
  5. 최종적으로 HTML이 렌더링되어 사용자에게 보여집니다.

# app/controllers/posts_controller.rb
def index
  @posts = Post.all
end

# app/views/posts/index.html.erb
<% @posts.each do |post| %>
  <h2><%= post.title %></h2>
  <p><%= post.content %></p>
<% end %>

🧱 각 요소를 깊이 있게 들여다보기

1. Model (모델)

Rails에서 모델은 ActiveRecord를 통해 DB 테이블과 연결됩니다.


class Post < ApplicationRecord
  validates :title, presence: true
end

데이터의 유효성 검사, 관계 설정, 비즈니스 로직 등을 담당합니다.

2. Controller (컨트롤러)

컨트롤러는 요청을 받아 필요한 데이터를 모델로부터 받아오고, 어떤 뷰를 렌더링할지 결정합니다.


def show
  @post = Post.find(params[:id])
end

3. View (뷰)

뷰는 사용자가 직접 보게 되는 화면입니다. .html.erb 파일은 HTML 안에 Ruby 코드를 삽입할 수 있는 템플릿이에요.


<h1><%= @post.title %></h1>
<div><%= @post.content %></div>

🌀 MVC가 주는 이점

  • 역할 분리: 유지보수성과 협업 효율 상승
  • 재사용성: 모델 로직은 다양한 컨트롤러에서 재사용 가능
  • 테스트 용이: 각 레이어별로 유닛 테스트 가능

🌊 실전 감각: MVC 흐름을 그림으로 이해해보기

사용자 → 라우터 → 컨트롤러 → 모델 → 데이터 가져옴 → 컨트롤러 → 뷰 → 사용자에게 HTML 응답!

이 흐름이 머릿속에 자연스럽게 그려져야 나중에 Ajax, API, GraphQL 같은 고급 기술을 다룰 때도 훨씬 수월해집니다.


🎯 마치며

MVC는 단순한 개념 같지만, Rails의 철학과 구조를 가장 잘 보여주는 핵심입니다. 컨트롤러가 하는 역할은 무엇이고, 뷰에서 데이터를 어떻게 출력하며, 모델은 어떤 유효성을 검증해야 하는지. 이 구조를 자연스럽게 익히면, 여러분은 이미 반쯤 Rails 장인이 된 거예요.

다음 글에서는 MVC를 확장해 모델 간의 관계 (has_many, belongs_to)를 다루어볼게요. 그럼 다음 편에서 만나요!

728x90
반응형

'Ruby On Rails' 카테고리의 다른 글

Validation & Callback — 데이터의 품질을 지키는 방법  (2) 2025.07.10
마이그레이션과 스키마 변화 — 안전하게 DB 구조 바꾸기  (1) 2025.07.09
ActiveRecord로 데이터 다루기 — CRUD의 정석  (0) 2025.07.07
Rails의 라우팅 시스템 — config/routes.rb 제대로 이해하기  (0) 2025.07.06
첫 번째 Rails 앱 만들기 — Blog 프로젝트로 배우는 MVC  (0) 2025.07.05
'Ruby On Rails' 카테고리의 다른 글
  • Validation & Callback — 데이터의 품질을 지키는 방법
  • 마이그레이션과 스키마 변화 — 안전하게 DB 구조 바꾸기
  • ActiveRecord로 데이터 다루기 — CRUD의 정석
  • Rails의 라우팅 시스템 — config/routes.rb 제대로 이해하기
코드를 걷는 사람
코드를 걷는 사람
devwanderer 님의 블로그 입니다.
  • 코드를 걷는 사람
    터미널 밖으로 나온 개발자
    코드를 걷는 사람
  • 전체
    오늘
    어제
    • 분류 전체보기
      • Flutter
        • Flutter 게시판 앱 만들기
        • Flutter 뉴스 앱 만들기
        • Flutter 메모 앱 만들기
        • Flutter 캘린더 앱 만들기
        • Flutter 날씨 앱 만들기
      • Next.js
      • Ruby On Rails
  • 블로그 메뉴

    • 홈
    • 태그
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    flutter게시판
    감성앱
    ActiveRecord
    개발블로그
    뉴스앱
    UI디자인
    flutterui
    openweather
    Nextjs
    북마크기능
    코드를걷는사람
    Firebase
    flutter디자인
    UIUX
    flutter개발
    정적사이트
    table_calendar
    flutter기초
    RubyOnRails
    flutter앱개발
    rails보안
    캘린더앱
    다크모드
    Flutter
    fluttertips
    백엔드개발
    모바일앱개발
    날씨앱
    flutter상태관리
    메모앱
  • 최근 댓글

  • 최근 글

  • 반응형
    250x250
  • hELLO· Designed By정상우.v4.10.3
코드를 걷는 사람
Rails에서의 MVC 구조 진짜 제대로 파보기
상단으로

티스토리툴바