2012-05-29 4 views
0

My Rails 3.2 프로젝트에는 개발자가 생성 한 사용자와 모든 사용자에게 해당되는 데이터가 포함 된 모델 세트가 있습니다. 로그인 한 사용자가 컨트롤러에 의해 공개 된 API를 통해 자신의 데이터에만 액세스 할 수 있기를 바랍니다.현재 사용 권한을 가진 사용자에게 유효 범위를 지정 하시겠습니까?

이제이 가능하도록 무차별 방법은 같은에서 각각의 모든 컨트롤러를 변경하는 것입니다 :

def index 
    @stuff = Stuff.all 

def index 
    @stuff = Stuff.find_all_by_user_id current_user.id 

에 그리고 매일이 작업을 반복해야 모든 단일 컨트롤러의 동작. 동일한 효과를 얻기위한보다 간결하고 건조한 방법이 있습니까? 필자가 작성해야하는 상용구의 양은 잘못되었다고 느낍니다.

감사합니다.

답변

1

CanCan 보석을보십시오.

+0

, 난 당신이 사람들이 알려드립니다 : 당신은 같은 것을 말할 곳

B) 또는 당신은 물건 model.rb에서 범위 지정 사용할 수 있습니다 ! –

0

는) 당신은

def find_stuff_from_current_user 
    @stuff = Stuff.find_all_by_user_id current_user.id 
end 

추천하고보다 뭔가 이런 모든 컨트롤러에이 전화를 보이는 application_controller.rb에서 콜백 전에 을 가질 수 있습니다 : 이제 당신이

before_filter :find_stuff_from_current_user 

@ 모든 컨트롤러와 모든 작업에서 사용할 수있는 변수. 그것을 절단 있지 않다면 나는이 트릭을 할해야한다고 생각

scope :stuff_from_current_user, where(:user => current_user) 
관련 문제