Reputation: 1203
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
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
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