gpt4 book ai didi

Ruby:将两个相似的方法合并为一个?

转载 作者:数据小太阳 更新时间:2023-10-29 08:32:47 24 4
gpt4 key购买 nike

在 Rails 应用程序的 Ruby 对象中,我有两个非常相似的方法。我知道它们可以结合,我只是不知道如何结合。 (除了 return unless 而不是使用 #try 之外,如果你能找到更漂亮的方法来处理可能的 nils,则加分。)

 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

最佳答案

怎么样:

def is_admin_of_type?(type, resource)
return unless resource.user && resource.user.clinic_memberships.any? && type
memberships = resource.user.clinic_memberships.collect { |membership| membership.send("#{type}_admin?") }
memberships.include?(true)
end

如果有人给出一个不存在的类型,它会抛出 NoMethodError。此外,如果您添加更多管理类型,它是向前兼容的。

关于Ruby:将两个相似的方法合并为一个?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15558839/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com