4

したがって、プログラムには次のモデルがあります。

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です。

この場合、どのように手続きすればよいですか?前もって感謝します!

4

1 に答える 1

4

を削除することを検討しましたか

belongs_to

グループレジスタブロックで宣言? このaa dslステートメントが提供するインターフェイスのネストは見栄えがよく、クリックパスを提供しますが、最終的にはデータ(モデル)の装飾にすぎません。ユーザー モデルでフィルターとスコープを使用することもできます。本当に必要な場合は、カスタム編集画面とカスタム リダイレクトを作成する必要があります。幸運を。

于 2012-11-07T10:45:41.470 に答える