От гугла вот что нашел, но все равно ошибка выходит
Да, потому, что если твой запрос не нашел ничего, то first вернет nil. А у объектов класса nil нужно тебе метода нет.
Выход может быть инициализация нового объекта:
@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 ||= Conversion.new
Хотя, на мой взгляд, если тебе нужно несколько раз получать значение этого метода, то да, используй под это дело дополнительную переменную.
@count_conversions = @conversion.count_conversions if @conversion
UPDATE: Или так, если важно, чтобы всегда в
@count_conversions
было число
@count_conversions = @conversion.try(:count_conversions).to_i .