如何只允许管理员查看链接

时间:2011-05-07 19:05:56

标签: ruby-on-rails

我使用Michael Hartl's Rails 3 Tutorial制作管理员用户。我正在制作,因此我的管理员用户只能看到所有用户的Index.html.erb。那么,我如何仅允许我的管理员用户查看我的链接?

这是我的UsersController中的内容:

before_filter :authenticate, :only => [:destroy,:index,:show,:edit, :update]
before_filter :correct_user, :only => [:edit, :update]
before_filter :admin_user,   :only => [:index,:destroy]
.
.
.
.
private
.
.
.       
def admin_user
    authenticate
    redirect_to(root_path) unless current_user.admin?
end 

这就是我正在尝试编辑以供管理员查看:

 <% if signed_in? %>        
      <%= link_to "Users", users_path %>
 <% end %>

3 个答案:

答案 0 :(得分:7)

为此编写一个帮助方法,以便您的视图干净且易读。

your_view.html.erb

<% link_to "Users", users_path if admin? %>

helpers/application_helper.rb

def admin?
  @current_user.name == "Mr.Wallinzi"
  # I made up the line above. Implement your own checks according to your setup
end

答案 1 :(得分:1)

我使用account_type作为用户的属性。所以我写了类似

的内容
def is_admin
   return true if self.account_type == 1 #The admin account type
end

因此...

<%if signed_in? && @active_user.is_admin %>      
  <%= link_to "Users", users_path %></div>
<% end %>

答案 2 :(得分:0)

如果你使用Devise,你可以轻而易举地实现这一点:

1-将admin属性添加到设计表:

一个。您可以使用迁移添加它:$ rails generate migration add_admin_to_users admin:boolean。您的迁移现在将如下所示:

  class AddAdminToUsers < ActiveRecord::Migration
    def change
      add_column :users, :admin, :boolean, :default => false
    end
  end

湾您也可以在迁移t.boolean :admin, null: false, default: false

之前将其添加到设备表

2-在你看来,你可以这样:

<%= link_to "Users", users_path if current_user.admin? %>

admin?添加到Devise表后,它将成为与email和其他类似的属性。它以问号?结束,因为它是一个布尔类型。