'respond_to'대 'respond_to?'가 혼동
railstutorial.org로 Rails를 배우고 있는데 뭔가 혼란 스럽습니다. 이 장 에서 저자는 respond_to?User 객체에 대한 메소드를 사용 하여 콘솔에서 테스트를 수행하라고 말하고 정상적으로 작동합니다. 그러나 나중에 :encrypted_password속성에 대한 테스트를 작성할 때 그는 respond_to.
호기심으로 respond_to콘솔에서 User 개체를 시도했는데 메서드가 존재하지 않는다는 오류가 발생합니다. 아아, respond_to?대신을 사용하여 테스트를 작성하려고 respond_to하면 테스트가 실행되지 않습니다.
누군가 나에게 차이점을 설명해 주시고 테스트가 왜 실행 respond_to됩니까?
Ruby는 메소드 이름에서 ?및 !실제 문자로 취급합니다 . respond_to그리고 respond_to?다릅니다. ?이것이 참 또는 거짓으로 응답 해야 함을 나타냅니다 (규칙에 따라 필수 사항이 아님). 구체적으로 특별히:
respond_to?클래스에 특정 메소드가 있는지 감지 하는 Ruby 메소드 입니다. 예를 들면
@user.respond_to?('eat_food')
User클래스에 eat_food메서드 가 있으면 true를 반환합니다 .
respond_toA는 레일 에있어서 특정 유형의 요청에 응답. 예를 들면 :
def index
@people = Person.find(:all)
respond_to do |format|
format.html
format.xml { render :xml => @people.to_xml }
end
end
그러나 제공 한 RailsTutorial 링크 에서 RSpec의 메서드 와 상호 작용 하는 RSpec 메서드를 볼 수 있습니다 . 을 실행하지 않으면 콘솔에서 사용할 수 없습니다 .shouldrespond_torails console test
respond_to?부울 평가입니다. 는 respond_to표시 정보를 결정하는 (일반적으로)를 사용한다. 여기에 더 많은 정보가 있습니다 . respond_to?그렇지 않은 경우가하는 거짓 경우 메소드가 true 존재 반환하는 경우 확인합니다.
이 테스트는 편리한 도우미를 사용하여 사용자에게 더 친숙합니다.
Ruby는 Ruby이므로 respond_to?다음과 같이 호출하면 좋은 오래된 것을 사용할 수 있습니다.
@user.respond_to?(:encrypted_password).should be_true
respond_to컨트롤러에서 사용되는 다른 것이 있지만 이미 만난 것과는 관련이 없습니다.
참고 URL : https://stackoverflow.com/questions/6849722/confused-about-respond-to-vs-respond-to
'IT TIP' 카테고리의 다른 글
| Firefox가 https로 리디렉션합니다. (0) | 2020.10.28 |
|---|---|
| Bash의 간단한 소켓 서버? (0) | 2020.10.28 |
| jQuery $ .cookie는 함수가 아닙니다. (0) | 2020.10.28 |
| GCC 치명적인 오류 : stdio.h : 해당 파일 또는 디렉터리가 없습니다. (0) | 2020.10.28 |
| OpenAL을 사용하여 iPhone에서 재생하기 위해 오디오를 CAF 형식으로 변환 (0) | 2020.10.27 |