У меня есть два чрезвычайно аналогичные методы в моем Ruby-объекте для приложения Rails. Я знаю, что их можно комбинировать, я просто не знаю, как это сделать. (Дополнительные очки, если вы можете найти более красивый способ справиться с возможным Nils, кроме return unless
, не используя #try
.)Ruby: Объедините два подобных метода в один?
def is_portal_admin?(resource)
return unless resource.user && resource.user.clinic_memberships.any?
memberships = resource.user.clinic_memberships.collect { |membership| membership.portal_admin? }
memberships.include?(true)
end
def is_staff_admin?(resource)
return unless resource.user && resource.user.clinic_memberships.any?
memberships = resource.user.clinic_memberships.collect { |membership| membership.staff_admin? }
memberships.include?(true)
end
Попробуйте определить свои разрешения в терминах символа или чего-то еще, а не поведения вызова метода. Затем вы можете реорганизовать это на один метод (is_admin_type), который принимает ресурс и символ разрешений. –