ActiveRecord - Rails application과 Database 간의 연동을 담당.
ActiveRecord
- Record 객체를 통해서 Database Table을 조작
- 각각의 Record는 Database의 각각의 row와 대응 : create, read, update, delete 가능
차이점 | 장점 |
Rails는 Database table에 정의된 Column을 기반으로 하여 속성을 자동으로 추가한다. Rails는 내부 언어로 관계 관리와 검증을 한다. Rails 작명 규약은 DB의 특수한 필드를 자동으로 찾아낸다. | 개발자는 속성을 지정할 때, DB만을 추가하면 된다. Rails 개발자는 관계와 모델 기반의 검증을 코드 생성없이 프레임워크 자체적으로 할 수 있도록 선언할 수 있다. Rails 개발자는 주키나 후보키를 따로 설정할 필요가 없다. |
OR Mappting
- Datatabe Table과 object를 각각 생성.
- Java Framework 에서 주로 사용되는 방법
- 여러 종류의 Database Schema 지원
- setting 파일의 복잡
- 코드의 중복 가능
ActiveRecord on Rails
- Setting대신 규약 : 규약에 의하여 Database Schema를 가져오는 것이 가능하다.
- MetaProgramming
- Mapping 언어 : Ruby를 이용하여 또 다른 언어를 만든다.
Rails 에서의 Active Record Model object 생성
- config/databasel.yml 수정
- Model 객체의 생성 (ruby script/generate model Photo)
- migration의 수정 - DB의 column의 설정(ruby에서 db의 table의 생성 및 수정 가능)
- migration의 실행 (rake db:migrate)
class CreatePhotos < ActiveRecord::Migration
def self.up #DB Table의 생성
create_table :photos do |photo|
photo.column "filename", :string
end
enddef self.down #DB Table의 삭제
drop_table :photos
end
end
Rails Console
Database와 Model간에 유기적인 결합을 만들어준다.
- DB에 연결
- app/model에 있는 Active Record Class들을 불러온다.
- Database와 Model간에 DB 작업을 포함하여 유기적인 작업을 할 수 있도록 하여준다.
photo = Photo.new
photo.filename = 'dog.jpg'
photo.save
photo = Photo.find_by_filename('dog.jpg')