在销毁一个对象后,我们必须返回包含对象之前没有它的关联的json,例如删除帖子后,我们需要返回一个更新类别列表,其中每个类别都删除了从“post_ids”属性中删除的帖子。
问题是我有~5个这样的关联,并且每次删除请求都要重新加载所有这些关联5个查询似乎不对。做这个的最好方式是什么?谢谢。
这是我当前代码的简化版本。假设我有两个模型
class Post < ActiveRecord::Base
has_and_belongs_to_many :categories
end
class Category < ActiveRecord::Base
has_and_belongs_to_many :posts
def as_json(options = {})
options[:methods] = [:post_ids]
end
end
控制器
class PostsController < ApplicationController
respond_to :json
def destroy
@post = Post.find(params[:id]
category_ids = @post.category_ids
if @post.destroy
@categories = Category.find(category_ids)
render :destroy
end
end
end
一个rabl模板,基本上将@categories作为json返回
object false
node(:categories) { @categories.map(&:as_json) }