2011-08-30 3 views
8
Ap::Application.routes.draw do 
    resources :accounts 
end 

"resources"메소드가 속한 클래스 또는 모듈을 알고 싶습니다. 제공된 검색 텍스트 상자에 http://apidock.com/rails/의 "resources"메소드를 검색하면 메소드 이름이 "resources"인 클래스 목록이 나타납니다. 혼란스럽고, 방법의 기원을 알았습니다.메소드가 레일에 속하는 클래스를 결정하십시오.

내가 사용할 수있는 명령이 원본을 볼 수 있습니까?

질문은 초급 수준입니다.

감사

그 방법에 전달 된 블록과 뭔가를해야하기 때문에, draw를 검색 resources에 대한 검색하는 것보다
+0

초급 질문이 아닙니다. 레일스는 많은 내부 구조를 숨 깁니다. 그러나 일반적인 이유는 일반적으로 알 필요가 없다는 것입니다. – Chowlett

답변

2

Ruby는 객체 지향 언어입니다. 방법은 루비의 개체 수는 없지만, 당신은 당신에게 문제가되는 방법을 나타내는 Method 객체를 제공하기 위해 루비를 요청할 수 있습니다, 그리고 당신은 단순히 Method 당신에게 소유자주고 있음을 알 수 있습니다 :

Ap::Application.routes.draw do 
    p method(:resources).owner 
end 
6

더 계몽. 실제로

, 우리는 것을 알 수 draw의 소스 코드를 찾아 제공된 블록은 Mapper의 컨텍스트에서 실행되며 includesResources (마지막으로!)이 정의됩니다. resources

+0

'resources '에 대한 검색 결과에는 두 개의 클래스 (이름은 capital로 시작 함)와 세 개의 메소드가 포함됩니다. 메소드 중 하나는> = v1.2.0 <= v2.3.8로 표시되므로 더 이상 사용되지 않으며, 하나는'DeprecatedMapper'의 멤버이기도합니다. – Chowlett

+0

많은 레일은 모듈로 나뉘어져 있습니다. 소스를 구성하는 데는 도움이되지만 문서는 조각화됩니다. 더 좋은 방법이 있다면 좋을 것입니다. – tadman

+0

감사 Chowlett. 나는 'ActionDispatch :: Routing :: Mapper :: Resources'모듈을 찾을 수 있었는데, 여기서는 당신의 단계에 따라 리소스 메소드가 정의되었다. 모든 메소드에 대해이 메소드를 적용 할 수 있는지 확실하지 않습니다. 죄송합니다 stackoverflow 하나의 답변을 올바른 것으로 표시 할 수 있습니다. 그러나 확실히 하나의 투표. :-) 도움에 다시 한번 감사드립니다. – rajkamal

0

가 CURRENT_USER 가정을 User 클래스의 인스턴스 인 경우 method 함수를 호출하여 method_name이 클래스 User에 속하는지 여부를 확인할 수 있습니다. 예

current_user.method(:method_name).owner 
User.method(:method_name).owner 

희망이 당신을 도울!

관련 문제