1

我被困在如何计算日期上。我有 3 个不同的列:demodate1、demodate2、demodate3

如果 demodate1 存在我想将其计为 1,如果 demodate 2 存在,我想将其计为 1,如果 demodate3 存在我想将其计为 1。如果存在超过 1 个,我想将它们加在一起。

我怎样才能做到这一点?

这是我对代码的尝试:

      def demosheld
        if demodate1.present? or demodate2.present? or demodate3.present?
          demodate1.count + demodate2.count + demodate3.count
        end   
      end
4

2 回答 2

3
def demosheld
  count = 0
  count = count + (demodate1.present? ? 1 : 0)
  count = count + (demodate2.present? ? 1 : 0)
  count = count + (demodate3.present? ? 1 : 0)
end

编辑:

其他选项是

[demodate1, demodate2, demodate3].inject{|sum,date| sum + date.present? ? 1 : 0 }

sum = 0
[demodate1, demodate2, demodate3].each { |date| sum += date.present? ? 1 : 0 }
于 2012-10-29T21:04:45.470 回答
1

注入魔法怎么样?

def demosheld
  [demodate1, demodate2, demodate3].inject(0) do |sum, date|
    sum + (date.present? ? 1 : 0)
  end
end
于 2012-10-29T21:08:43.910 回答