我有一个Search类,其中有一个处理请求并返回用户ids的方法。
此外,我有三个方法,这三个方法是基于结果的数量,它们将计算特定类别的用户数量。
但事实证明,我必须调用base_lead_scope方法4次,有可能摆脱它吗?
def initialize(opts = {})
opts.symbolize_keys!
@params = opts[:params]
@current_team = opts[:current_team]
@current_user = opts[:current_user]
@scope = base_lead_scope(opts[:overrides] || {})
end
def archived_count
@archived_count ||= base_lead_scope(overrides: { archived: true })
.including_referrals(user: current_user, team: current_team)
.archived.total_count
end
def recruiting_count
@recruiting_count ||= base_lead_scope(overrides: { archived: false })
.including_referrals(user: current_user, team: current_team)
.recruiting_status.total_count
end
def retention_count
@retention_count ||= base_lead_scope(overrides: { archived: false })
.including_referrals(user: current_user, team: current_team)
.retention_status.total_count
end发布于 2019-03-08 14:00:16
你可以把它写成,
def get_count_of(status)
@archived_count ||= base_lead_scope(overrides: { archived: (status == :archieved ? true : false) })
.including_referrals(user: current_user, team: current_team)
.public_send(status)
.total_count
end因此可以在状态参数中传递这些属性,如下所示,
get_count_of(:archived)
get_count_of(:recruiting_status)
get_count_of(:retention_status)https://stackoverflow.com/questions/55055322
复制相似问题