Ruby on Rails-활성 레코드

Rails Active Record는 Rails와 함께 제공되는 ORM (Object / Relational Mapping) 계층입니다. 다음과 같은 표준 ORM 모델을 밀접하게 따릅니다.

  • 테이블은 클래스에 매핑됩니다.
  • 행은 객체에 매핑되고
  • 열은 개체 속성에 매핑됩니다.

Rails Active Records는 관계형 데이터베이스의 테이블과 데이터베이스 레코드를 조작하는 Ruby 프로그램 코드 간의 인터페이스와 바인딩을 제공합니다. Ruby 메소드 이름은 데이터베이스 테이블의 필드 이름에서 자동으로 생성됩니다.

각 Active Record 개체에는 CRUD (Create, Read, Update 및 Delete) 데이터베이스 액세스 방법. 이 전략을 사용하면 데이터베이스 테이블과 응용 프로그램 개체 간의 간단한 디자인과 직접적인 매핑이 가능합니다.

도메인 모델을 SQL로 변환

Rails 친화적 인 SQL을 작성해야한다는 것을 기억하는 한 도메인 모델을 SQL로 변환하는 것은 일반적으로 간단합니다. 실제적으로는 특정 규칙을 따라야합니다.

  • 각 엔티티 (예 : 책)는 그 이름을 따서 명명 된 데이터베이스에 테이블을 가져 오지만 복수 (책)에 있습니다.

  • 이러한 각 항목 일치 테이블에는 테이블에 삽입 된 각 레코드에 대한 고유 한 정수를 포함하는 id 라는 필드 가 있습니다.

  • 엔티티 x와 엔티티 y가 주어지면 엔티티 y가 엔티티 x에 속하면 테이블 y에는 x_id라는 필드가 있습니다.

  • 테이블에있는 대부분의 필드는 해당 엔터티의 단순 속성 (숫자 또는 문자열 인 모든 항목)에 대한 값을 저장합니다.

액티브 레코드 파일 (모델) 생성

이전 장에서 소개 한 라이브러리 응용 프로그램에 대한 엔터티에 대한 Active Record 파일을 만들려면 응용 프로그램 디렉터리의 최상위 수준에서 다음 명령을 실행합니다.

library\> rails script/generate model Book
library\> rails script/generate model Subject

rails generate model book 명령은 아래와 같이 자동 코드를 생성합니다-

생성기에 책과 주제의 인스턴스를 저장하기 위해 Book 및 Subject라는 모델을 생성하도록 지시합니다. Book 및 Subject를 대문자로하고 단수 형식을 사용하고 있습니다. 이것은 모델을 생성 할 때마다 따라야하는 Rails 패러다임입니다.

생성 도구를 사용할 때 Rails는 모델에 고유 한 모든 메소드와 정의한 비즈니스 규칙을 보유한 실제 모델 파일, 테스트 주도 개발을 수행하기위한 단위 테스트 파일, 사용할 샘플 데이터 파일 (픽스처라고 함)을 생성합니다. 단위 테스트와 데이터베이스 테이블과 열을 쉽게 생성 할 수있는 Rails 마이그레이션을 사용합니다.

다른 많은 파일과 디렉토리를 만드는 것 외에도 이렇게하면 book.rbsubject.rb 뼈대 정의를 포함하는 app/models 예배 규칙서.

book.rb에서 사용 가능한 콘텐츠 −

class Book < ActiveRecord::Base
end

subject.rb에서 사용 가능한 콘텐츠-

class Subject < ActiveRecord::Base
end

모델 간 연결 생성

Rails 애플리케이션에 둘 이상의 모델이있는 경우 해당 모델간에 연결을 만들어야합니다. 연관을 통해이를 수행 할 수 있습니다. Active Record는 세 가지 유형의 연결을 지원합니다.

  • one-to-one− 일대일 관계는 한 항목이 정확히 다른 항목 중 하나를 가질 때 존재합니다. 예를 들어, 한 사람의 생일이 정확히 하나이거나 개가 정확히 한 명의 주인을 가지고 있습니다.

  • one-to-many− 단일 개체가 다른 많은 개체의 구성원이 될 수있는 경우 일대 다 관계가 존재합니다. 예를 들어, 한 주제에 많은 책이있을 수 있습니다.

  • many-to-many − 첫 번째 객체가 하나 이상의 두 번째 객체와 관련되고 두 번째 객체가 하나 이상의 첫 번째 객체와 관련된 경우 다 대다 관계가 존재합니다.

모델에 has_one, has_many, belongs_to 및 has_and_belongs_to_many 선언을 추가하여 이러한 연관을 표시합니다.

이제 라이브러리 데이터 시스템 내에서 설정하려는 관계를 Rails에 알려야합니다. 그렇게하려면 book.rb와 subject.rb를 다음과 같이 수정하십시오.

class Book < ActiveRecord::Base
   belongs_to :subject
end

하나의 책이 하나의 주제에 속할 수 있기 때문에 위의 예에서 단일 주제를 사용했습니다.

class Subject < ActiveRecord::Base
   has_many :books
end

한 주제에 여러 권의 책이있을 수 있기 때문에 여기서는 복수의 책을 사용했습니다.

모델에 대한 유효성 검사 구현

검증 구현은 Rails 모델에서 수행됩니다. 데이터베이스에 입력하는 데이터는 실제 Rails 모델에 정의되어 있으므로 동일한 위치에 어떤 유효한 데이터가 포함되는지 정의하는 것이 합리적입니다.

유효성 검사는-

  • 제목 필드의 값은 NULL이 아니어야합니다.
  • 가격 필드의 값은 숫자 여야합니다.

열다 book.rbapp\model subdiractory 및 다음 유효성 검사를 넣어-

class Book < ActiveRecord::Base
   belongs_to :subject
   validates_presence_of :title
   validates_numericality_of :price, :message=>"Error Message"
end
  • validates_presence_of − 누락 된 사용자 입력으로부터 "NOT NULL"필드를 보호합니다.

  • validates_numericality_of − 사용자가 숫자가 아닌 데이터를 입력하는 것을 방지합니다.

위에서 언급 한 유효성 검사 외에도 다른 일반적인 유효성 검사가 있습니다. Rails Quick Guide를 확인하십시오 .

다음은 무엇입니까?

다음 장에서는 Ruby를 사용하여 데이터베이스 스키마에 대한 변경 사항을 정의하고 버전 제어 시스템을 사용하여 실제 코드와 동기화 상태를 유지할 수있는 Rails Migration에 대해 알아 봅니다.