0

私はユーザーとアカウントの2つのモデルを持っていますが、それらはAccountUsersを介して多対多の関係にあります。ユーザーは他のユーザーを自分のアカウントに招待できますが、認証されたユーザーが招待されたユーザー(または共同編集者)を削除できるようにすることもできます。ユーザーオブジェクトではなく、結合テーブルの関連付けまたは行のみを削除したい。そして、これを行う方法、具体的には、ルートを設定し、methodとlink_toを破棄する方法がよくわかりません。

私のメソッドは現在次のようになっています。

def destroy
    @account.users.delete(collaborator)
end

私のリンクは次のようになります:

= link_to "Remove collaborator", collaborator,  confirm: "You sure?", :method => :delete

これは現在、

undefined method `user_path' for #<#<Class:0x007fe3fc4f2378>:0x007fe3fe718510>

link_toに直接入れようとしまし@account.users.delete(collaborator)たが、クリックされる前に行が削除されます。

私のルートは現在次のようになっています:

resources :accounts do
  resources :projects
  resources :invitations
  resources :collaborators, :only => [:index]
end

そして、このような私のモデルの関連付け:

# User
has_many :account_users
has_many :accounts, through: :account_users, :dependent => :destroy

# Account
belongs_to :user
has_many :account_users
has_many :users, through: :account_users

私が望むことを達成できるようにするには、どのように、そして何をすべきですか?

破棄アクションが配置されている別のコントローラー(コラボレーター)がないので、ユーザーコントローラーにはありません。

ありがとう。

4

1 に答える 1

2

あなたがこれを持っているとき、問題はルートにあるかもしれません

 resources :collaborators, :only => [:index]

また、アカウントにネストされています。したがって、routes.rbを少し書き直してみることができます

resources :accounts do
  resources :projects
  resources :invitations
  resources :collaborators
end

リンクは次のようになります

 = link_to 'Remove collaborator', accounts_colaborator_path(@account,@colaborator), :method => :delete
于 2012-05-12T10:52:33.437 に答える