Files
Dena/app/models/admin_ability.rb
2026-08-13 19:50:53 +03:30

25 lines
761 B
Ruby

class AdminAbility
include CanCan::Ability
def initialize(member)
return if Ability.admin_permissions[member.role].nil?
# Iterate through member permissions
Ability.admin_permissions[member.role].each do |action, rules|
# Iterate through a list of member model access
rules.each do |rule|
# check if rule define attributes
if rule.is_a?(Hash)
model = rule.keys.first
attributes = rule[model].map(&:to_sym)
# example, can :update, Currency, [:visible, :name] (model attributes)
else
model = rule
# example, can :update, Currency
end
can action.to_sym, model == 'all' ? model.to_sym : model.constantize, attributes
end
end
end
end