В настоящее время я создаю приложение 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 %>
Но я хочу знать, является ли это правильным подходом, должен ли я продолжать использовать условные ссылки для этих действий или есть лучший способ?