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はのcreateアクションに送信されます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

これは、提案モデルのデフォルトスコープの一部として実行できます

scope :includes(:service)
于 2012-05-05T00:24:13.647 に答える
0

保存に熱心にロードすることはできません。クエリのみ。ただし、保存して@suggestionをビューに戻すと、@ suggestion.serviceにアクセスするとデータベースにアクセスし、適切なデータが返されます。

于 2012-05-05T05:14:03.270 に答える