Method: NotableWeb::HomeController#index

Defined in:
app/controllers/notable_web/home_controller.rb

#indexObject



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
# File 'app/controllers/notable_web/home_controller.rb', line 9

def index
  @safe_params = params.slice(:status, :note_type, :note, :user_id, :user_type, :action_name, :status, :scope).permit!.to_h

  where = @safe_params.slice(:status, :note_type, :note, :user_id, :user_type)
  where = {notable_requests: where} if where.any?

  page_method_name = Kaminari.config.page_method_name

  # https://github.com/rails/rails/issues/9055
  @requests = Notable::Request.order("notable_requests.id DESC").where(where).preload(:user).public_send(page_method_name, params[:page]).per(100)

  if params[:action_name]
    @requests = @requests.where(action: params[:action_name])
  end

  if params[:status]
    @requests = @requests.where("note_type != 'Slow Request'")
  end

  @requests =
    case params[:scope]
    when "slow_requests"
      @requests.where("action IS NOT NULL AND (status = 503 OR note_type = 'Slow Request')")
    when "referrer"
      @requests.where("referrer IS NOT NULL")
    when "external_referrer"
      domain = PublicSuffix.parse(request.host).domain rescue request.host
      @requests.where("referrer IS NOT NULL").where("referrer NOT LIKE ?", "%#{domain}%")
    else
      @requests
    end
end