我像往常一样在我的应用中创建建议:
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
答案 0 :(得分:0)
您可以在建议模型中将其作为默认范围的一部分
scope :includes(:service)
答案 1 :(得分:0)
您不能急于加载保存。仅限查询。但是,一旦你保存并将@suggestion返回到访问@ suggestion.service的视图,它将命中数据库并为你返回适当的数据。