Как запретить пользователям редактировать и удалять действия в зависимости от назначенных им ролей - PullRequest
0 голосов
/ 31 января 2019

Я работаю над проектом rails, где у меня есть модели User и Roles, которые я связал с моделью UserRole, используя ассоциацию has_many through.Теперь моя проблема - отобразить действия пользователей в соответствии с их ролями.Действия состоят из показа, редактирования и удаления.Игрок, администратор и супер администратор должны иметь возможность просматривать и редактировать свои собственные профили.Администратор должен иметь возможность редактировать, назначать и удалять себя и игрока, но он не должен иметь возможность редактировать или уничтожать супер администратора.Супер администратор должен иметь возможность делать все на всех.

Это моя страница указателя, где каждый пользователь отображается со своей информацией, которую я написал только для назначения ролей

<% if signed_in_user.role?'admin' || signed_in_user.role?'super admin'  %>
  <%= link_to t('.assign_role', default: t("helpers.links.assign")),
     new_user_role_path(user_id: user.id),
     method: :get,
     class: 'btn btn-default btn-xs' %>
<%end%>

это мойсхема

create_table "roles", force: :cascade do |t|
  t.string "name"
  t.boolean "active"
  t.integer "counter"
  t.datetime "created_at", null: false
  t.datetime "updated_at", null: false
end

create_table "user_roles", force: :cascade do |t|
  t.integer "role_id"
  t.integer "user_id"
  t.datetime "created_at", null: false
  t.datetime "updated_at", null: false
  t.index ["role_id"], name: "index_user_roles_on_role_id"
  t.index ["user_id"], name: "index_user_roles_on_user_id"
end

create_table "users", force: :cascade do |t|
  t.string "first_name"
  t.string "last_name"
  t.string "email"
  t.string "photo"
  t.datetime "created_at", null: false
  t.datetime "updated_at", null: false
  t.string "encrypted_password", default: "", null: false
  t.string "reset_password_token"
  t.datetime "reset_password_sent_at"
  t.datetime "remember_created_at"
  t.index ["reset_password_token"], name: "index_users_on_reset_password_token", unique: true
end
...