DaveG
DaveG

Reputation: 1203

Counting Date Columns in Rails

I'm getting stuck on how to count a date. I have 3 different columns: demodate1, demodate2, demodate3

If demodate1 exists I want to count it as 1, if demodate 2 exists, I want to count it as 1, if demodate3 exists I want to count it as 1. If more than 1 of those exist I want to add them all together.

How can I do this?

Here's my try at the code:

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

Upvotes: 1

Views: 51

Answers (2)

felipeclopes
felipeclopes

Reputation: 4070

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

Edit:

Other options are

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

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

Upvotes: 3

Anthony DeSimone
Anthony DeSimone

Reputation: 2034

How about some inject magic?

def demosheld
  [demodate1, demodate2, demodate3].inject(0) do |sum, date|
    sum + (date.present? ? 1 : 0)
  end
end

Upvotes: 1

Related Questions