본문 바로가기

named scope2

named scope안에서 last 메소드를 사용했을 때의 문제 해결 얼마전 ruby on rails 개발을 하던중 이상한 점을 하나 발견했습니다. 빈 값을 반환해야할 named scope가 그 반대인 전체 레코드를 모두 반환하는 것이 그것이었습니다. 제가 의도했던 코드의 로직은 아주 간단했습니다. 1. 데이터를 필터링함 2. 제일 마지막 record를 가져옴 그래서 저는 아무 생각 없이 model에 named scope를 만들어 주었습니다. class Model scope :example, -> { where(name: 'haeree').last } end 그리고 실행 결과는 이러했습니다. Model.where(name: 'haeree') # => [] Model.example # => [모델1, 모델2, 모델3] 또잉??? 저는 첫번째 라인처럼 where함수가 반환하는.. 2019. 11. 28.
Named scope로 db 조회를 최적화 해보자 Ruby on Rails를 공부하면서 낯설었던 개념중에 하나는 scope였습니다. scope라고 하면 변수가 살아있는(!) 범위를 뜻하는 scope가 바로 떠올라서 그런지 Ruby on Rails의 scope 키워드가 정확히 어떤 기능을 하는지 잘 와닿지 않았습니다. 그러던 중 scope에 대해 쉽게 잘 설명해놓은 How to optimize your search with Named Scopes in Rails 5 라는 영문블로그 글을 찾아서 개념도 정리할겸 번역을 해보았습니다.. #오역주의 * 아래 글에서 얘기하는 필터는 rails의 컨트롤러의 액션 앞뒤에서 실행하는 filter가 아니라 where문을 통해 데이터 베이스안에 데이터를 필터링하여 조회하는 메소드나 코드를 말함. * 아래 글에서 수차례 s.. 2019. 10. 31.