Has_and_belong_to_many 关联

问题描述

我有两个模型,它们之间没有关联。所以,我生成了一个迁移并添加了一个关联。

class Post < ActiveRecord::Base
  has_and_belongs_to_many :workspaces
end
class Workspace < ActiveRecord::Base
  has_and_belongs_to_many :posts
end
class CreateJoinTablePostsUsers < ActiveRecord::Migration
  def change
    create_join_table :posts,:workspaces do |t|
      # t.index [:post_id,:workspace_id]
      # t.index [:workspace_id,:post_id]
    end
  end
end

我目前有一个页面,其中显示了所有帖子。但是,我在创建后的表单中添加了一个多选,以便在创建时选择一个或多个工作区。我希望能够仅显示为该特定工作区创建的帖子,而不是所有帖子,就像目前一样。 我的控制器如下:

class PostsController < Admin::BaseControlle
  def index
    respond_to do |format|
      format.html
      format.json do
        @posts = Post.all.order(:order)
        render json: present_collection(@posts,PostPresenter).map(&:as_json)
      end
    end
  end

  private

  def post_params
    params.require(:post).permit(:label,:url,:active,workspace_ids: [])
  end
end

我可以通过这种方式获得关联的工作区:

Post.first.workspaces

但我想显示所有帖子,但在尝试此命令时出现错误:

Post.all.workspaces

我怎样才能改变我的控制器并实现它?预先感谢您的帮助!

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)