Method: AnswersController#index

Defined in:
app/controllers/answers_controller.rb

#indexObject

GET /answers GET /answers.json



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
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
# File 'app/controllers/answers_controller.rb', line 9

def index
  if !current_user.try(:has_role?, 'Librarian')
    if @question
      unless @question.try(:shared?)
        access_denied; return
      end
    end
    if @user != current_user
      access_denied; return
    end
  end

  @count = {}
  if user_signed_in?
    if current_user.has_role?('Librarian')
      if @question
        @answers = @question.answers.order('answers.id DESC').page(params[:page])
      elsif @user
        @answers = @user.answers.order('answers.id DESC').page(params[:page])
      else
        @answers = Answer.order('answers.id DESC').page(params[:page])
      end
    else
      if @question
        if @question.shared?
          @answers = @question.answers.order('answers.id DESC').page(params[:page])
        else
          access_denied; return
        end
      elsif @user
        if @user == current_user
          @answers = @user.answers.order('answers.id DESC').page(params[:page])
        else
          access_denied; return
        end
      else
        access_denied; return
      end
    end
  else
    if @question
      @answers = @question.answers.order('answers.id DESC').page(params[:page])
    else
      access_denied; return
    end
  end
  @count[:query_result] = @answers.size

  respond_to do |format|
    format.html # index.html.erb
    format.json { render json: @answers.to_json }
    format.rss  { render layout: false }
    format.atom
  end
end