1

我像往常一样在我的应用程序中创建建议:

class SuggestionsController < ApplicationController
  def create
    @suggestion = current_user.suggestions.new(params[:suggestion])

    if @suggestion.save
      render :show, status: :created
    else
      render :error, status: :unprocessable_entity
    end
  end
end

每个建议都属于一个服务(service_id发送到 中的创建操作params[:suggestion])。

当我将建议返回给客户端时,我想在 JSON 中包含建议服务的详细信息。这意味着我应该急于将它加载到某个地方以节省数据库请求。

如果我找到建议,这会很好:

Suggestion.includes(:service).find(params[:id])

我可以在储蓄上做类似的事情吗?

@suggestion = current_user.suggestions.new(params[:suggestion])
# This doesn't work.
@suggestion.includes(:service).save
4

2 回答 2

0

您不能急于加载保存。仅在查询中。但是,一旦您保存并将@suggestion 返回到访问@suggestion.service 的视图,将访问数据库并为您返回适当的数据。

于 2012-05-05T05:14:03.270 回答
0

您可以将此作为建议模型中默认范围的一部分

scope :includes(:service)
于 2012-05-05T00:24:13.647 回答