如何在销毁后正确重新加载关联

时间:2015-05-07 07:37:08

标签: ruby-on-rails json ruby-on-rails-4 activerecord rails-activerecord

在销毁一个对象后,我们必须返回包含对象之前没有它的关联的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) }

0 个答案:

没有答案