아침바라기의 이야기

Active Record Scope 정리 본문

개발이야기/Ruby on Rails

Active Record Scope 정리

아침바라기 2015. 10. 24. 21:18

주의) 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은 호출 안한 것이 된다.



참고


Active Record scope vs class method