Я пытаюсь реализовать систему доступа на основе ролей в своем приложении rails 4, и я хочу, чтобы конечный пользователь (super_admin) имел возможность редактировать назначения роли через пользовательский интерфейс.Управление ролью Rolify and Rails 4
Я достиг некоторого успеха, но не могу не чувствовать, что должен быть лучший способ (поскольку я новичок в рельсах). Вот мой код:
users_roles_controller.rb
# GET /user_roles/new/:id
def new
@roles = Role.all
end
# POST /user_roles/new/:id
def create
populated = params[:roles][:name].reject(&:empty?)
populated.each do |key|
@user.add_role Role.find(key).name
end
redirect_to users_path
end
И в моей форме (HAML и simple_form):
= simple_form_for :roles, :url => create_user_roles_path(@user.id), :method => "post" do |f|
= f.input :name, :collection => @roles, as: :check_boxes
= f.button :submit
я борюсь со следующим:
- Как проверить формы записи, так как нет модели?
- Должен ли я использовать сильные параметры, и если да, то каким образом я могу реализовать на форме без модели
- Как создать что-то подобное, но с текущими ролями уже проверены? (Истинное управление ролями)
ОБНОВЛЕНИЕ Я рассмотрел использование реформа Gem, как это было предложено в комментариях. Это кажется отличным решением. Однако у меня возникают проблемы с реализацией этого дела.
Позволь мне карту это: У меня есть 3 таблицы в базе данных:
- пользователи
- users_roles (Mapping таблица с 2 Атрибутами: user_id & role_id {Join Table -> HABTM})
- Роли
Я хочу создать форму со всеми значениями в модели Роли в качестве флажков. Флажки должны диктовать, какие значения подаются в таблица users_roles (по отношению к определенному пользователю). То, что я хочу сделать, - это подтвердить ввод этой формы. Эта форма всегда отображает все значения в Ролях, но некоторые/все поля могут быть сняты.
Я создал папку формы в моем приложении и начал со следующим кодом:
class UserRoleForm < Reform::Form
property :user__id, on: :user
property :role_id, on: :role
validates :user__id, presence: true
validates :role__id, presence: true
end
я иду в правильном направлении?
Спасибо за помощь.
1. Проверьте [реформа] (https://github.com/apotonick/reform) для моделей без таблиц. –
Спасибо @ JustinM. Я добавил обновление к своему сообщению. Это, безусловно, похоже на то, что вы на что-то. – Herm