【问题标题】:Active Admin nested associations活动管理员嵌套关联
【发布时间】:2012-11-01 14:05:22
【问题描述】:

所以我的程序中有以下模型:

class User < ActiveRecord::Base
  has_many :group_members
  has_many :groups, through: :group_members 

class GroupMember < ActiveRecord::Base
  belongs_to :user
  belongs_to :group
end

class Group < ActiveRecord::Base
  has_many :group_members
  has_many :users, through: :group_members
end

我正在使用 ActiveAdmin 来管理这些资源。我在 admin 文件夹中的 groups.rb 文件如下所示:

ActiveAdmin.register Group do
.
.
  belongs_to :user, :optional => true
.
.
end

问题是,组本身就是一种资源 - 管理员可以通过转到 /admin/groups 路由来管理组 - 但它也是用户的资源,我可以通过访问来查看用户组/admin/users/:user_id/groups 路线。但是,当我尝试通过访问/admin/users/:user_id/groups/new 页面并填写表单来为该用户创建一个新组时,我收到一个错误:

ActiveRecord::RecordNotFound in Admin::GroupsController#show
Couldn't find Group with id=13 [WHERE `group_members`.`user_id` = 2]

user id对应我当前登录的用户是正确的,而group id = 13对应的是新建组的id(正确保存在数据库中),但是group_members中的关联未创建表。实际上,这甚至不是我想要在这里实现的目标:理想的情况是检索组列表并将其显示在新页面中,以免在此页面中创建新的groups - 只有@987654330 @。

在这种情况下我该如何处理?提前致谢!

【问题讨论】:

    标签: ruby-on-rails activeadmin


    【解决方案1】:

    你有没有考虑删除

    belongs_to
    

    组注册块中的声明?这个 aa dsl 语句给你的接口嵌套,看起来不错,给你一个点击路径,但最终它只是对数据(模型)的装饰。在用户模型中使用过滤器和范围也可以。如果您真的需要 aa 的 belongs_to,您将不得不创建自定义编辑屏幕和自定义重定向。祝你好运。

    【讨论】:

      猜你喜欢
      • 2016-07-18
      • 1970-01-01
      • 2015-11-07
      • 2012-02-27
      • 2011-04-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多