본문 바로가기

분류 전체보기28

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.
Ruby nil 처리하기 1. assignment operator ||= 오늘 rails로 개발 중 구글링을 하다가 이런 라인을 발견했습니다. number ||= 1 또잉 이게 무슨 연산자일까요? 1. ||는 다른 언어에서 보통 논리연산자 or로 사용됩니다. 2. x*=2 , x+=1 처럼 어떤 연산자 뒤에 =이 붙었다면 앞의 연산자로 연산을 시행 한 후 변수에 다시 대입을 해주는 복합 대입 연산자라고 볼 수 있습니다. 합리적인 추론에 의하면 ||= 는 or연산을 시행한 값을 number에 대입해주는 복합 대입 연산자라고 할 수 있겠네요. 3. ||의 피연산자에 true나 false가 아닌 nil과 객체가 왔을때 결과값은 다음과 같습니다. nil || 0 => 0 1 || 0 => 1 0 || 1 => 0 nil || nil =.. 2019. 11. 14.
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.
Ruby On Rails 6.0.0 InvalidAuthenticityToken 에러 대처하기 최근 회사 업무때문에 Ruby On Rails를 학습하고 있습니다. 처음 접하는 언어/프레임워크라 간단한 CRUD 튜토리얼을 따라하는 중인데요, 거의 뭐 프로젝트를 시작하자 마자 빨간색 에러 화면을 만나게 되었습니다. form 태그를 통해서 POST 메소드로 데이터를 전달하는 부분에서 난 에러인데요 대충 보니 인증 Token이 유효하지 않다는 것 같습니다. 입문 강의였기 때문인지 강의에서는 application controller에서 이 코드를 주석처리 하면 된다고 하고 대충 넘어갔습니다. 눈 씻고 봐도 그런 코드가 없네요.. 어쩔 수 없이 에러가 난 이유를 하나씩 찬찬히 찾아보았습니다. 먼저 Rails의 Authenticity Token이 뭐 하는 놈인지 찾아보았습니다. Authenticity Toke.. 2019. 10. 17.