액티브레코드란?

액티브레코드(ActiveRecord)는 관계형데이터베이스(RDBMS)의 테이블을 객체로 연결(ORM : Object Relational Mapping)해서 네이티브 데이터베이스 SQL을 사용하지 않고도 데이터를 조작할 수 있도록 다양한 메소드를 제공해 준다.

MVC 디자인 패턴으로 개발하는 레일스에서 액티브레코드는 M(Model)에 해당한다. 이 책의 프로젝트 따라하기에서 사용하는 Post 모델 클래스의 소스를 보면 아래와 같다.

# app/models/post.rb
class Post < ApplicationRecord
  belongs_to :bulletin, optional: true
  has_many :comments, dependent: :destroy
  mount_uploader :picture, PictureUploader
end

# app/models/application_record.rb
class ApplicationRecord < ActiveRecord::Base
  self.abstract_class = true
end

위의 소스코드에서 Post 모델 클래스는 ActiveRecord 모듈의 Base 클래스(ActiveRecord::Base)로부터 상속 받은 ApplicationRecord 모델을 상속 받는다. 이 말은, ORM을 통해서 데이터베이스 테이블을 쉽게 조작할 수 있도록, Base 클래스에 정의된 메소드를 Post 모델에서도 모두 그대로 사용할 수 있다는 의미이다.

Post 모델 클래스가 정의되고 실제로 데이터베이스에 posts 테이블이 존재하면 액티브레코드의 다양한 메소드를 바로 사용해서 데이터를 조작할 수 있게 된다.

즉, Post 모델의 빈 객체를 생성하기 위해서는 아래와 같이 코드를 작성할 수 있다.

@post = Post.new

레일스 콘솔을 통해서 확인하면 아래와 같다.

$ bin/rails console
Running via Spring preloader in process 27349
Loading development environment (Rails 5.0.1)
>> post = Post.new
=> #<Post id: nil, title: nil, content: nil, created_at: nil, updated_at: nil, bulletin_id: nil, picture: nil>

출력 결과에서 알 수 있듯이, post 변수는 Post 모델 클래스의 new 클래스 메소드를 이용하여 데이터가 없는 빈 인스턴스 객체를 할당받게 된다. => 다음에 보이는 반환값은 post 객체에 포함되는 속성 목록을 보여주고 있다. 이러한 각 속성들의 값은 객체지향적 프로그래밍의 기본적인 문법을 이용하여 쉽게 얻을 수 있다.

>> post.title
=> nil

results matching ""

    No results matching ""