2017-12-04 6 views
1

어떻게 호출 체인의 중간에 주석을 추가 할 수 있습니까?호출 체인 중간에 주석 추가

Tag.joins(:taggings). 
    # Comment 1 
    # Comment 2 
    where(...). 
    where(...). 
    where(...). 
    # And here 
    group(...). 
    order(...) 

방법 . 점에서이 구조

Tag.joins(:taggings) 
    # Wanted to add comment here cause it's long 
    # and takes multiple lines 
    .where(...) 
    .where(...) 
    .where(...) 
    # And here 
    .group(...) 
    .order(...) 

답변

4

변경 :

나는 루비 내가 같은 호출 체인의 중간에 댓글을 추가 할 때 구문 분석 오류가 발생 것을 볼 end는 구문 분석기에게 표현식이 끝나지 않았고 논리적 메서드 체인이 도착할 것이라고 지시합니다.

+1

파서뿐만 아니라 (여러 줄) 주석 뒤에 명령문이 계속 나오지 않을 것으로 예상되는 프로그래머에게도 힌트입니다. – Stefan

3

음, 그렇게하지 않습니까? 대신, 설명 적 이름이 논리의 작은 조각으로 물건을 깰 방법을 사용 : 물론

def add_that_long_thing_to(query) 
    # Wanted to add comment here cause it's long 
    # and takes multiple lines 
    query.where(...) 
     .where(...) 
     .where(...) 
end 

def add_grouping_and_ordering_to_query) 
    # And here 
    query.group(...) 
     .order(...) 
end 

query = Tag.joins(:taggings) 
query = add_that_long_thing_to(query) 
query = add_grouping_and_ordering_to(query) 

을, 그 이름은 현실에서 더 합리적인 것 그러나 우리는 코드의이 실제로 무엇인지 모른다 그래서 뭔가를 만들어야 만 했어.

+0

레일스에서 ​​일반적으로 [scope] (http://guides.rubyonrails.org/active_record_querying.html#scopes)를 사용합니다. – Stefan

+1

@Stefan 물론 한 곳에서만 사용한다면 스코프가 조금 있습니다. –

+0

@muistooshort : 예제가 구문 상 유효하지 않습니다. 루비는'query.where (...)'다음에 끝나는 명령문을 고려할 것이다. Ruby가 다음 줄의'.where '도이 표현식에 속한다는 것을 인식하게하는 한 가지 가능성은 괄호 안에 모든 것을 포함하는 것입니다. 이것은 또한 독자가 전체 내용이 하나의 표현이라는 것을 이해하는 데 도움이됩니다. – user1934428