我正在尝试为我制作的测验管理员制作一个 API。
我有一个测验模型,它有_many 问题和has_many 结果问题模型也有_many 答案
我希望 url/data/quiz/7
将所有问题+答案和结果返回到 id=7 的测验
这是我目前的方法。
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 等,我想要的只是查询中选择的字段,就像我拥有的一样。
为什么 .select 适用于 @questions 和 @results 而不是关联的 @answers?
无论我尝试什么,它似乎都忽略了答案循环的选择语句并总是返回完整的对象。
--
在控制台中......我知道做同样的事情
question.answers.select('id, content, points')
返回正是我所追求的。所以这与我将它放入数组/哈希的方式有关,我猜想但仍然无法解决。