2014-11-27 1 views
1

저는 초보자이며 약 10 주 동안 Ruby on Rails를 배우고 있습니다. keyword_end범위가있는 keyword_end를 예상하면서 '{'} 예기치 않은 구문 오류가 발생하는 이유는 무엇입니까?

그것은 내 괄호 닫고있는 것처럼 나는이 보이는

기대, 구문 오류 '}', 예기치 않은 :

RB : 4 내 모델 중 하나에 RSpec에 테스트를 실행하려고 할 때,이 오류가 발생합니다 제대로 끝났어.

범위의 목적은 지난 주에 작성된 항목과 7 일이 지난 항목을 구별 할 수있게하는 것입니다.

다음은이 목록 모델 내 스키마입니다 :

create_table "items", force: true do |t| 
    t.string "body" 
    t.integer "list_id" 
    t.boolean "done",  default: false 
    t.datetime "created_at" 
    t.datetime "updated_at" 
    end` 

나는 레일 가이드 검토 한 반복 수색하지만 내 현재의 구문이 잘못 알려줍니다 아무것도 찾을 수 없습니다. 어떤 아이디어?

+0

은'(7 .days.ago)'람다 매개 변수? – August

+0

with "where"7 일 전 또는 그 이하로 작성된 항목을 찾고 있습니다. – EricLowber

답변

3

람다를 어떻게 정의했는지 문제가 있습니다. Ruby & 레일스를 처음 배우기 시작한 지금, 램다가 무엇인지, 어떻게 작동하는지, 그리고 구문이 무엇인지 이해하려면 this article을 읽는 것이 좋습니다. 둥근 괄호 안의 코드는 날짜의 정의가 아닌 람다에 전달 될 수있는 변수 이름이어야합니다. 예 코드가 :

scope :created_after, -> (7.days.ago) { where("item.created_at > ?", 7.days.ago) } 

가되어야한다

scope :created_after, -> (date) { where("item.created_at > ?", date) } 

이 같은 Items에 쿼리를 만들 수있는 그런 방법 :의 목적/의도 된 의미를 무엇

new_items = Item.created_after(7.days.ago) # or.. 
newer_items = Item.created_after(3.days.ago) # or... 
new_done_items = Item.where(done: true).created_after(7.days.ago) # etc 
+0

도움 주셔서 감사합니다! – EricLowber

+0

도와 드리겠습니다 :) 귀하의 문제가 해결 되었다면,이 질문에 답이 표시되도록 제 답변을 허용으로 표시 할 수 있습니까? – Pete

+0

확실한 것. Stack Overflow에 익숙하다. – EricLowber

관련 문제