私は、acts_as_commentable_with_threading
コメントテーブルを自動的に作成するというgemを使用しています。このテーブルには、、、 などcommentable_type
の列があります。commentable_id
多形になっているので、問題なく動作しています。
私はこれらの3つのモデルを持っています。
- ユーザー
- コミュニティ
- トピック
それぞれの下にコメントがあります。
ユーザーが自分のユーザーページにある自分のコメントまたは他の誰かのコメントを削除できるようにしたいと思います。
(彼は自分のユーザーページのすべてのコメントを削除できます)
以下のコードのようなコーディングを可能にすることを考えました。
しかし、コミュニティページとトピックページでも同じことが起こることがわかりました。
ユーザーがコメントの元の作成者でなくても、コミュニティ/トピックのIDがユーザーIDと同じである場合、ユーザーはすべてのコメントを削除することができます。
私はそれがUSERモデルを有効にすることだけが好きです。どうすればこれをカスタマイズできますか?
models /ability.rb
can [:create, :destroy], Comment, {:user_id => user.id}
can [:destroy], Comment, {:commentable_id => user.id}