2010-03-29 4 views
0

리소스를 직접 편집하고 삭제할 수는 있지만 응용 프로그램 사용자는 리소스를 삭제할 수 있기를 원합니다.편집 및 삭제 제한

레일에서이 작업을 수행하는 쉬운 방법이 있습니까?

불완전한 해결 방법은 인덱스보기에서 "삭제"및 "편집"단추를 제거하는 것이지만 직접 HTTP 요청을 통해 수행 할 수있는 기능을 비활성화하지는 않습니다.

아래 그림과 같이 레일 2.2.2와 루비 1.8.7

답변

3

controller에 before_filter 추가 실행 :

class PostsController < ApplicationController 

    before_filter :require_god, :only => [:edit, :update, :destroy] 

private 
    def require_god 
    unless current_user.id == (@@god ||= User.find_by_login("phleet")).id 
     flash[:notice] = "You don't have access to this page" 
     redirect_to root_path 
     return false 
    end 
    end 

end 
1

나는 CanCan를 추천 할 것입니다. 정말 간단합니다. 사용자가 할 수없는 것을 정의하기 위해서만 ability.rb가 필요합니다.

0

active_scaffold, admin_data 및 typus (모두 github에서 사용 가능)를 살펴보십시오. 그것들은 사용자가 직면 한 것들로부터 별도의 관리 작업을 쉽게 유지할 수있는 방식으로 관리 측면을 쉽게 구축 할 수있게 해주는 모든 플러그인입니다. 필자는 개인적으로 typus를 좋아하지만 다른 사용자 테이블과는 별도의 typus_users 테이블이 있어야합니다. 이는 모든 사람의 취향이 아닐 수도 있습니다.

반면에 복잡한 것을 원하지 않거나 처음부터 직접 작성하려는 경우 간단한 before_filter가 트릭을 수행해야합니다.

관련 문제