Привет всем. Изучаю рельсы, но найти на этот вопрос ответа нигде не могу, либо просто не могу понять, почему не работает.
Есть запрос
@conversion = Conversion.joins(:track)
.select('SUM(conversions.revenue) as sum_revenue, COUNT(*) as count_conversions')
.group('tracks.campaign_id')
.where(:tracks => { :campaign_id => campaign_id })
.order('tracks.campaign_id ASC')
.first
Я вот хочу чтобы у меня при вызове @conversion.count_conversions не возникало undefined method `count_conversions' for nil:NilClass - а это возникает тогда, когда при агрегации у нас пуст @conversion
Я как понимаю, что могу это обойти с помощью
!@conversion.blank? ? @conversion.count_conversions.to_i : 0,
но это как-то слишком громоздко для руби и боюсь что совсем не "DRY"
От гугла вот что нашел, но все равно ошибка выходит
#Conversion model
after_initialize :default_values
def default_values
self.count_conversions ||= 0
end
# или вот такое вставляю, тоже нету смысла
def count_conversions
read_attribute(:count_conversions) or 0
end
Объясните новичку, пожалуйста, в чем я запутался, чего не могу понять и как можно красиво (а я почти уверен что это можно сделать) вынести значения по умолчанию в модель. Спасибо!