Лучший способ скрыть определенную информацию о пользователях на рельсах, используя devise как метод аутентификации? - PullRequest
0 голосов
/ 02 сентября 2018

В настоящее время я создаю приложение rails для понимания структуры прямо сейчас, мой контроллер аутентифицирует пользователя, у меня есть три типа пользователей, использующих enum и поле с именем row в таблице users, и на моем контроллере приложения у меня есть это

class ApplicationController < ActionController::Base
 protect_from_forgery with: :exception

 protected

  def authenticate_editor!
   redirect_to request.referrer, :flash => { :error => "You don't have 
   the permissions to do this!" } unless user_signed_in? && 
   current_user.editor?
  end

  def authenticate_admin!
   redirect_to request.referrer, :flash => { :error => "You don't have 
   the permissions to do this!" } unless user_signed_in? && 
   current_user.admin?
 end
end

Итак, прямо сейчас на моих контроллерах я определил действие перед этими защищенными методами, например, роль администратора - единственная, кто не может уничтожить посты в моем posts_controller. Это работает, но, на мой взгляд, любой пользователь может увидеть ссылку уничтожить действие на странице индекса этой модели, если обычный пользователь нажимает на эту ссылку, появляется флэш-память, и он не может выполнить действие, но я не Я не хочу, чтобы обычные пользователи видели ссылку, если они бесполезны, я знаю, что могу скрыть ее, например, с помощью этого:

<% if current_user.admin? %>
   <%= link_to 'Destroy', post_path(post),
   method: :delete,
   data: { confirm: 'Are you sure?' } %>
<% end %>

Но я хочу знать, является ли это правильным подходом, должен ли я продолжать использовать условные ссылки для этих действий или есть лучший способ?

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