Class: C80NewsTz::BannersController

Inherits:
ActionController::Base
  • Object
show all
Defined in:
app/controllers/c80_news_tz/banners_controller.rb

Overview

считает клики по баннерам

Instance Method Summary collapse

Instance Method Details

#counterObject

считает клики по баннерам



7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
# File 'app/controllers/c80_news_tz/banners_controller.rb', line 7

def counter

  # TODO_MY:: реализовать защиту от накручивания, быстрых повторных кликов с того же ip, левых запросов

  # params[:c] = $
  # где строка вида rb{(\d\d)}_{(\d+)}:
  #   $1: часть имени класса баннера
  #   $2: id баннера в базе

  s = params[:c]
  rex = /(?<=rb)(\d\d)_(\d+)/
  result = s[rex]

  if result.present?

    # извлекаем данные
    class_part_name = result[$1]
    banner_id = result[$2]
    Rails.logger.debug("<BannersController.counter> class_part_name = #{class_part_name}, banner_id = #{banner_id}")

    # фиксируем баннер
    b = nil
    if class_part_name == '01'
      b = Banner01.find(banner_id)
    elsif class_part_name == '02'
      b = Banner02.find(banner_id)
    elsif class_part_name == '03'
      b = Banner03.find(banner_id)
    end

    # увеличиваем счётчик на единицу
    if b.present?
      b.clicks += 1
      b.save!
    end

  end

end