2011-05-06 3 views
2

나는 devise plugin을 사용하며 current_user 헬퍼가 있습니다. 내 사용자는 응용 프로그램에서 많은 프로필을 가질 수 있으므로 사용자는 has_many :profiles이며 항상 그 중 하나가 활성화됩니다.create current_something helper

어떻게 도우미를 만들 수 있습니까? current_profile?

감사합니다 그것으로부터 상속 모든 컨트롤러와 뷰에 사용할 수 있도록합니다

답변

4

당신은 ApplicationController에서 도우미를 만들 수 있습니다 :

class ApplicationController < ActionController::Base 
    protect_from_forgery 
    helper_method :current_profile 

private 
    def current_profile 
    # get current_profile based on current_user here 
    end 
end 

지금 당신이 어떤 뷰/컨트롤러에 current_profile를 사용할 수 있습니다.

0

은 실제로 어떤 프로필이 활성 상태인지 파악하는 데 불과합니다 (사용자가 주어진 세션에서 활성 프로필을 1 개만 가질 수 있다고 가정 할 때 더 쉽게 만들 수 있습니다). 따라서 현재 세션 정보를 사용하여 현재 사용자를 찾은 다음 활성 프로필을 찾고 빙고를 완료하면됩니다.

여기까지는인데, 이것은 실제로 범위의 문제입니다. 도우미 메서드를 모든보기에서 사용할 수있게하려면 응용 프로그램 컨트롤러에서 도우미 메서드를 선언하기 만하면됩니다.

1

User 클래스에서 나는 그냥 쓸 수 컨트롤러/헬퍼 내부 방법을 다음

class User 
    has_many :profiles 

    def current_profile 
    @current_profile ||= profiles.where('current = ?', true).first 
    end 
end 

과를 추가 :이 도움이

current_user.current_profile 

희망을.