2011-12-06 1 views

답변

2

질문을 이해하는 데 약간의 어려움이 있습니다. 질문을 잘못 해석하면 미리 사과드립니다.

현재 로그인 한 사용자의 항목 만 검색하도록 제한하는 방법을 찾고 있습니까?

이 처음이 같은 항목 및 사용자, 뭔가 사이의 연결이 필요합니다 당신이 현재 current_user를 사용하여 로그인 한 사용자가 액세스 할 수있는 가정, 그리고

class User < ActiveRecord::Base 
    has_many :items 
end 

class Item < ActiveRecord::Base 
    belongs_to :user 
end 

을, 당신과 같이 검색을 제한 할 수 있습니다

@item = current_user.items.find(params[:id]) 

편집 :

: 당신이 session[:user_id] 같은 세션에 저장된 USER_ID가있는 경우에, 당신은 다음과 같은 작업을 수행 할 수

어느 쪽이든 절차는 동일합니다. 유효한 사용자 개체로 시작하고 항목 관계를 사용하여 범위를 해당 사용자와 관련된 항목으로 제한하십시오.

주제를 조금 벗어나면, 세션에 직접 user_id를 저장하는 것을 피할 수 있습니다. 매우 쉽게 스푸핑되어 원치 않는 액세스를 허용 할 수 있습니다 (다른 질문에 대한 대화 일 수 있음).

+0

내가 원했던 것이 고맙습니다.하지만 작성한 코드를 사용하면 ''에 대해 '정의되지 않은 로컬 변수 또는 메서드'라는 오류가 발생합니다. –

+0

ItemsController 논리를 게시 할 수 있습니까? 솔루션은 응용 프로그램이 인증을 처리하는 방법에 따라 다릅니다. 대부분의 인증 방법은 컨트롤러에 현재 로그인 한 사용자의 변수를 제공합니다. 내가 준 예제에서이 변수는 "current_user"였지만 응용 프로그램이 다른 규칙을 사용하는 것처럼 보입니다. – Justin

+0

내가 이해하려고 노력하고있어,하지만 내 응용 프로그램에서 사용자를위한 함수가 느껴진다 세션 [: user_id] = user.id –

관련 문제