Şu ana kadar kusursuz bir şekilde çalışmış olan yetkilendirme için pundit 0.3.0 ile birlikte Active Admin 1.0.0.pre1 kullanarak bir Rails 4 uygulamasına sahibim, ancak formları otomatik olarak bir kullanıcıya göre kişiselleştirmenin iyi bir yolunu bulmakta zorlanıyorum rolü.Active Admin form girişlerini Pundit izin verilen özniteliklerle otomatik olarak nasıl kaldırabilirim?
Verilen bu modeller:
ActiveAdmin.register AdminUser do
permit_params do
Pundit.policy(current_admin_user, resource).permitted_attributes
end
form do |f|
f.inputs "Admin Details" do
f.input :role, as: :select, collection: [:manager, :admin]
f.input :email, as: :email
f.input :password
f.input :password_confirmation
end
f.actions
end
end
class AdminUserPolicy < ApplicationPolicy
def permitted_attributes
attributes = [:email, :password, :password_confirmation]
attributes += [:role] if user.has_role? :super_admin
attributes
end
end
Ben role
girişi için istediğiniz otomatik formdan kaldırılacak.
Bir seçenek çizgisinde bir şey olurdu: Bu yaklaşım kontrol edilmelidir hangi nitelikleri hatırlamak geliştirici gerekir,
permitted_attributes = Pundit.policy(current_admin_user, resource).permitted_attributes
form do |f|
f.inputs "Admin Details" do
f.input :role if permitted_attributes.include? :role
f.input :email
f.input :password
f.input :password_confirmation
end
f.actions
end
ama, unutkanlık eğilimli görünüyor ve tam olarak KURU değildir. Belki de bu konuda yanlış bir şekilde gidiyorum? Tüm öneriler kabul edilir.
% 95 eminim, cevap burada 'main_content' yönteminde bir yerde saklanıyor: https://github.com/activeadmin/activeadmin/blob/master/lib/active_admin/views/pages/form.rb. Şu anda test etmek için AA ile açık bir projem yok, ancak bu sınıfı geçersiz kılabilirsiniz ve ':' rolünün girişini el ile dışarıda bırakmayı deneyebilirsiniz. –