0

私のコントローラーでは、一部のユーザーに関連付けられている、各キーに関連付けられているすべてのリクエストを取得しようとしています。

class PendingsController < ApplicationController
  # GET /pendings
  # GET /pendings.json
  def index
    @pending_requests = current_user.keys.reduce do |key|
      key.requests.where(ready: false).to_a
    end

    respond_to do |format|
      format.html # index.html.erb
      format.json { render json: @pending_requests }
    end
  end

ただし、@ pending_requestsには、「[]:Arrayの未定義のメソッド'requests'があります」

一部のユーザーに関連付けられた複数のキーと、一部のキーに関連付けられた複数のリクエストがあります。

デバッガーでは、key.requestsはMongoidリレーションとして認識されますが、それでも失敗します。

どうしてこれなの?

4

1 に答える 1

1

reduce使い方を誤解していると思います。試す:

@pending_requests = current_user.keys.each_with_object([]) do |key, array|
  array.concat key.requests.where(ready: false).to_a
end
于 2012-12-03T19:50:13.513 に答える