일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
Tags
- java
- Linux
- carrierwave
- rubyonrails
- programming
- Scala
- 삽질기
- transaction
- mysql
- apache spark
- 전화영어
- fixture
- fileUploader
- test
- Hadoop
- uploader
- Shell
- minitest
- TIP
- RoR
- max중첩
- Ruby
- 점심영어스터디
- programmingTip
- Rails
- Migration
- share
- Ruby on Rails
- form
- activerecord
Archives
- Today
- Total
아침바라기의 이야기
Active Record Scope 정리 본문
주의) Active Record scope vs class method 원문 글과 거의 비슷합니다. 제가 이해 해보려고 요약해보는 내용입니다.-.-;;
Active record에는 scope라는 개념이 있다.
Active record로 DB에서 데이터를 조회할 때 조회 범위를 줄여준다거나 필터링 할때 주로 사용한다.
예를 들면, 블로그에서 발행된 포스트만 조회한다는 의미를 담고 있을때,
Post.published
위와 같이 조회하도록 한다.
자 여기서 분명한 특징을 생각해보자.
조회 한걸 봤을때 클래스 메소드가 아닐까?
일종의 클래스 메소드가 맞다. 다만 클래스 메소드처럼 클래스가 로드 되는 시점에 블록을 평가하는 형태가 하나, 호출되는 시점에 블록을 평가하는 형태 두가지가 있다.
scope: by_member_type, -> member_type { where(member_type: member_type) if member_type.present? }
요렇게 사용하면
# Member.logged_in 와 같은 결과 Member.by_member_type(nil).logged_in
요런식으로 호출했을때 by_member_type은 호출 안한 것이 된다.
참고
'개발이야기 > Ruby on Rails' 카테고리의 다른 글
[Rails] ActiveRecord::FixtureSet.identify (0) | 2015.11.03 |
---|---|
[Ruby] Fixture 작성 방법 (0) | 2015.10.27 |
[Rails] Minitest를 이용한 모델 테스트 팁 (0) | 2015.10.23 |
[Rails] 트랜잭션 사용법 (0) | 2015.10.21 |
Carrierwave Uploder로 동적 이미지 version 생성법 (0) | 2015.10.07 |