私が作成したクイズ管理者用の API を作成しようとしています。
has_many Questions と has_many Results の Quiz モデルがあります。Question モデルも has_many Answers です。
/data/quiz/7
すべての質問+回答と結果をID = 7のクイズに返すURLが必要です
これが私が現時点で持っているこのための方法です。
def quiz
@quiz = Quiz.find(params[:id])
@questions = @quiz.questions.select('id, content') # returns only selected fields
@results = @quiz.results.select('id, content, points_limit') # returns only selected fields
@questions.each do |question|
question['answers'] = question.answers.select('id, content, points') #returns whole object
end
@return = Hash.new
@return['questions'] = @questions
@return['results'] = @results
respond_to do |format|
format.json { render json: @return }
format.xml { render xml: @return }
end
end
回答がcreated-at、id、updated-atなどを含む完全な回答オブジェクトを返すことを除いて、すべてが機能し、必要なのはクエリで選択されたフィールドだけです。
@questions と @results では .select が機能するのに、関連する @answers では機能しないのはなぜですか?
何を試しても、回答ループの選択ステートメントを無視し、常に完全なオブジェクトを返すようです。
--
コンソールで...同じことをしていることを知っています
question.answers.select('id, content, points')
私が求めているものを正確に返します。だから、私が推測している配列/ハッシュにそれを入れる方法と関係がありますが、それでも解決できません。