1

日付の数え方に困っています。私は3つの異なる列を持っています: demodate1, demodate2, demodate3

demodate1 が存在する場合は 1 と数えたい、dedate2 が存在する場合は 1 と数えたい、demodedate3 が存在する場合は 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 に答える