0

我正在开发一个调查应用程序,并且一个组织有 0 个或多个调查组,其中有 0 个或多个参与调查的成员

对于一个 SurveyGroup 我需要知道还有多少调查需要完成所以我有这个方法:

调查组#surveys_outstanding

  def surveys_outstanding
    respondents_count - surveys_completed
  end

但我还需要知道在组织层面有多少调查是优秀的,所以我有一个像下面这样的方法,但是有没有更惯用的方法来使用 Array#inject 或 Array#reduce 或类似的方法来做到这一点?

组织#surveys_pending

   def surveys_pending
      result = 0
      survey_groups.each do |survey_group|
         result += survey_group.surveys_outstanding
       end
      result
   end
4

2 回答 2

2

试试这个:

def surveys_pending
  @surveys_pending ||= survey_groups.map(&:surveys_outstanding).sum
end

我正在使用记忆化,以防计算缓慢

于 2013-08-14T16:08:15.917 回答
0
def surveys_pending
  survey_groups.inject(0) do |result, survey_group|
     result + survey_group.surveys_outstanding
  end
end
于 2013-08-14T16:07:30.433 回答