Я пытаюсь создать страницу редактирования для группы пользователей, которую могут видеть только администраторы.Я создал 3 модели:
group.rb:
class Group < ApplicationRecord
...
has_many :user_groups, dependent: :destroy
has_many :users, through: :user_groups
...
end
user.rb:
class User < ApplicationRecord
...
has_many :user_groups, dependent: :destroy
has_many :groups, through: :user_groups
...
end
usergroups.rb:
class UserGroup < ApplicationRecord
belongs_to :user
belongs_to :group
validates_presence_of :user_id
validates_presence_of :group_id
end
Модель групп пользователей - это та, которая включает логическое поле «true», когда пользователь является администратором.Вот schema.rb для упомянутых моделей:
create_table "groups", force: :cascade do |t|
t.string "name"
t.text "description"
t.bigint "user_id"
t.integer "type"
t.datetime "created_at", null: false
t.datetime "updated_at", null: false
t.string "slug"
t.index ["slug"], name: "index_groups_on_slug", unique: true
t.index ["type"], name: "index_groups_on_type"
t.index ["user_id"], name: "index_groups_on_user_id"
end
create_table "user_groups", force: :cascade do |t|
t.bigint "user_id"
t.bigint "group_id"
t.boolean "is_admin"
t.boolean "is_owner"
t.datetime "created_at", null: false
t.datetime "updated_at", null: false
t.index ["group_id"], name: "index_user_groups_on_group_id"
t.index ["user_id"], name: "index_user_groups_on_user_id"
end
create_table "users", force: :cascade do |t|
t.string "email", default: "", null: false
t.string "encrypted_password", default: "", null: false
t.string "username", default: "", null: false
t.string "reset_password_token"
t.datetime "reset_password_sent_at"
t.datetime "remember_created_at"
t.integer "sign_in_count", default: 0, null: false
t.datetime "current_sign_in_at"
t.datetime "last_sign_in_at"
t.string "current_sign_in_ip"
t.string "last_sign_in_ip"
t.datetime "created_at", null: false
t.datetime "updated_at", null: false
t.index ["email"], name: "index_users_on_email", unique: true
t.index ["reset_password_token"], name: "index_users_on_reset_password_token", unique: true
t.index ["username"], name: "index_users_on_username", unique: true
end
Мой вопрос:
Как настроить администраторов, используя поле "is_admin" в usergroups.rb? Я пытался что-то вроде "group.usergroups.is_admin?"но никаких результатов с этим.
Для устранения сомнений авторизация будет выполняться 'pundit', но у меня нет ясности в том, как охватить администраторов.Я использую рельсы 5.2 и ruby 2.6.
Любой совет?Спасибо!