Как разрешить только админу просматривать ссылку - PullRequest
4 голосов
/ 07 мая 2011

Я делаю своего администратора с помощью Учебное пособие Майкла Хартла по Rails 3 . Я делаю так, чтобы мой администратор мог видеть только 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 ]

7 голосов
/ 07 мая 2011

Напишите вспомогательный метод для этого, чтобы ваши представления были чистыми и читаемыми.

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 голос
/ 07 мая 2011

Я использую 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 %>
0 голосов
/ 02 сентября 2015

Если вы используете Devise , вы можете легко добиться этого в несколько строк:

1 - Добавить admin атрибут в таблицу Devise:

а. Вы можете добавить его, используя миграцию: $ 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 и другим. И заканчивается вопросительным знаком ?, потому что это логический тип.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...