所以我的程序中有以下模型:
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 来管理这些资源。我groups.rb
在 admin 文件夹中的文件如下所示:
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]
用户id对应我当前登录的用户,是正确的,而group id = 13对应的是新创建的组的id(正确保存在数据库中),但group_members
没有创建表中的关联。实际上,这甚至不是我想要在这里实现的目标:理想的情况是检索组列表并将其显示在新页面中,以免groups
在此页面中创建新的 - 仅group_members
.
在这种情况下我该如何进行?提前致谢!