0

我正在使用设计并拥有

before_filter :authenticate_user! 

在资源页面上,现在页面可以由任何注册用户创建/更新,但我不希望特定用户,例如 :id = 22 没有 thls。这该怎么做 ?

例如,这是我在 PageController 上的更新代码

@page = Page.find(params[:id])

所以我想让它像

if user.id != 22
    @page = Page.find(params[:id])
4

1 回答 1

1

你可以在你的页面控制器中通过

if current_user and current_user.id != 22
  ...

或者通过before_filter在您的页面控制器中

before_filter :check_for_specific_user, :only => [:create, :update]

def check_for_specific_user
  if current_user and current_user.id == 22
    # redirect or something
  end
end

或者你可以在你的应用程序控制器中通过

before_filter :check_for_specific_user

def check_for_specific_user
  if params[:controller] == 'pages' and ['create', 'update'].include? params[:action] and current_user and current_user.id == 22
    # redirect or something
  end
end

也可能在应用程序控制器中有一个方法是个好主意

def admin?
  current_user and current_user.id == 22
end

然后在页面控制器中,您将能够编写

if admin?
  # ...
end
于 2013-05-06T04:50:50.333 回答