2014-10-18 3 views
0

에서 클래스의 인스턴스 메서드에 액세스 내가 인스턴스 메서드 다른 모듈의 인스턴스 메소드

class User < Group 
    def get_name 

    end 

    def show_profile 

    end 

    def get_task(task_id) 
    #some logic 
    end 

end 

의 숫자를 선언하는 클래스가 내가 모듈 내에서 이러한 방법 중 몇 가지를 호출합니다. 나는 Include 문으로 그것을 할 수있다.

include 사용자는 사용자 클래스에서 모든 메소드를 가져옵니다. 이 경우에는 get_task 만 원하는데 명시 적으로 get_name, show_profile 등을 원하지 않습니다.

나는 또한 메소드 세트가있는 태스크 모듈을 가지고 있으며 그 중 하나의 메소드는 사용자 클래스의 get_task 메소드를 호출합니다.

module Tasks 
     class Project 
     def design 
      tid = 12 
      design_task = get_task(tid) 
     end 
     end 
    end 

해당 클래스의 다른 불필요한 메소드를 포함하지 않고 어떻게 달성 할 수 있습니까? 도와주세요.

+0

클래스를 포함하지 않고 모듈을 포함합니다. 정확히 무엇을하려고합니까? – Surya

+0

예 .. 당신 말이 맞아요. 죄송합니다 .. 내가 달성하고 싶은 모듈에서 작업을 얻으려면 get_task : : 프로젝트 # 디자인 방법 .. 미안 해요. 루비 메타 프로그래밍을 배우기 시작했습니다. 그래서 이런 종류의 시나리오를 생각해 냈습니다. – rubyist

+0

당신이 저를 오해했다고 생각합니다. 코드가 모듈 태스크에 맞았습니다. 지금은 그렇지 않습니다. 내 코멘트는 다음 행에 달려있다 : * include 사용자는 User 클래스의 모든 메소드를 가져온다. 이 경우에는 get_task 만 원하는데 get_name, show_profile 등을 명시 적으로 원하지 않습니다. * – Surya

답변

0

get_task 메소드가 사용자에 의존하지 않으면 다음과 같은 클래스 메소드를 사용할 수 있습니다. 사용자에 따라 다르면이 방법을 실행하기 전에 서버를 가져야합니다.

class User < Group 
    def get_name 

    end 

    def show_profile 

    end 

    def self.get_task(task_id) 
    #some logic 
    end 

end 

class Project 
    def design 
     tid = 12 
     design_task = User.get_task(tid) 
    end 
end 
+0

죄송합니다. 나는 그 진술을 얻지 못했습니다 "사용자에 따라 다르면 메소드를 실행하기 전에 서버를 가져야합니다" – rubyist

+1

"get_task"메소드가 사용자의 인스턴스에 무언가를 수행하게하려면 먼저 사용자를 얻은 다음 user_variable.get_task (tid)를 호출하십시오. 메소드가 사용자의 특정 인스턴스에 대해 아무 것도하지 않으면 클래스 변수를 사용할 수 있습니다. – user3803797

관련 문제