渴望加载to_json包括

时间:2011-05-18 00:36:44

标签: ruby-on-rails ruby-on-rails-3

我需要根据我的模型渲染一些JSON,我需要包含一些相关的模型。这是我的代码。

  def validate_candidate_id 
    matches = User.where(:wca_id => params[:wca_id])
    if matches.any?
      respond_to do |format|
        format.html { redirect_to user_url(matches.first) }
        format.json { render :json => matches.first.to_json(:include => {:candidate_results => {:include => [:checklist_item_results, :assessment]}}) }
      end
    else
      respond_to do |format|
        format.html { render :text => "Invalid ID" }
        format.json { render :json => {}.to_json }
      end
    end
  end

结果。但是,是这样的:

{"user":{"admin":true,"email":"charlie@naturalguides.com","evaluator":true,"first_name":"Charlie","id":1,"last_name":"Mezak","wca_id":"999999","candidate_results":[{"id":5,"checklist_item_results":[{"id":45},{"id":46},{"id":47},{"id":48},{"id":49},{"id":50},{"id":51},{"id":52},{"id":53},{"id":54},{"id":55}],"assessment":{"id":1}}]}}

如您所见,所有相关模型都缺少其属性。只包括他们的id键。我假设这与急切加载有关,我需要以某种方式将这些记录加载到内存中,以便它们的整个内容将包含在to_json中,但是如何做到这一点?

谢谢!

2 个答案:

答案 0 :(得分:1)

我在模型上使用as_json解决了这个问题。我一直在使用to_json,这给了我不完整的结果。从我刚刚读到的内容来看,似乎as_json是这样做的首选方法,但我从来没有听说过它!

答案 1 :(得分:0)

您是否尝试过使用ActiveRecord包含功能,即。

User.where(:wca_id => params[:wca_id]).includes(:candidate_results => [:checklist_item_results, :assessment])