Так что я использую камень Cancancan в своем приложении. У меня есть Пользователи , аутентифицированные с помощью гемов Devise / Omniauth и Администраторы , что они аутентифицируются с помощью простой пользовательской аутентификации.Я хочу достичь способности
.bb
def initialize(userOrAdmin)
if userOrAdmin.user?
can :read, User
return unless user.present?
can :manage, User, id: user.id
elsif userOrAdmin.admin?
can [:update, :read] , Admin, id: admin.id
end
end
end
, но это не работает.Я пытался переопределить метод способности, подобный этому
application_controller
def current_ability
if current_admin?
@current_ability ||= Ability.new(current_admin)
elsif current_user?
@current_ability ||= Ability.new(current_user)
end
end
, но я получаю nomethod current_admin error вероятно, потому что Cancancan принимает current_admin от устройства, но не может найти его, хотя я использую собственный метод current_admin.
Я также попытался назначить роли с помощью enum в User.rb и Admin.rb и изменитьСпособность.rb правильно, но я получил неопределенный метод admin?для ошибки пользователя
Cancancan verion 2.0