したがって、プログラムには次のモデルがあります。
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]
ユーザー ID は現在ログインしているユーザーに対応し、それは正しいですが、グループ ID = 13 は新しく作成されたグループの ID に対応します (データベースに正しく保存されます) が、group_members
テーブルの関連付けは作成されません。実際、それは私がここで達成しようとしていることでもありません。理想的なシナリオは、グループのリストを取得して新しいページに表示し、groups
このページでnew を作成しないようにすることgroup_members
です。
この場合、どのように手続きすればよいですか?前もって感謝します!