私は2つのモデルUserとAccountを持っていますが、AccountUsersを通して多対多の関係を持っています。ユーザーは自分のアカウントに他のユーザーを招待できますが、認証されたユーザーが招待されたユーザー(または共同編集者)を削除できるようにすることもできます。私は、ユーザーオブジェクトではなく、結合テーブル内の関連付けまたは行を削除したいだけです。そして、私はこれをどうやって行うのか、具体的にどのように私のルートを設定し、メソッドとリンクを破壊すべきかについてはあまりよく分かりません。Rails 3.2との結合テーブルの行を削除します。
私の方法は、現在、次のようになります。
def destroy
@account.users.delete(collaborator)
end
私のリンクは次のようになります。私も直接@account.users.delete(collaborator)
を入れて試してみました
= link_to "Remove collaborator", collaborator, confirm: "You sure?", :method => :delete
これは、現在
undefined method `user_path' for #<#<Class:0x007fe3fc4f2378>:0x007fe3fe718510>
になり私のlink_toでは、それはクリックされる前に行を削除します。
私のルートは現在、次のようになります。このような
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
どのように、私は私が望むものを達成することができるようにするには何をすべき?
私の破壊操作がある別のコントローラ(コラボレータ)はありません。これはユーザーコントローラにはありません。
ありがとうございました。あなたはこの
resources :collaborators, :only => [:index]
を持っており、また、アカウントにネストされている場合
のようになりますか? – Suborx
@Suborxこれは私のCollaboratosコントローラにあり、インデックスアクションもあります。 – Anders