0

我正在使用名为acts_as_commentable_with_threading
它的 gem 自动创建评论表,其中有这些列,例如commentable_typecommentable_id和等。

它被制成多态的,并且工作正常。

我有这三个模型。

  • 用户
  • 社区
  • 话题

他们对每个都有评论。

我想让用户在他的用户页面上删除他的评论或其他人的评论。
(他可以删除他用户页面上的所有评论)

我想使它能够像下面的代码一样进行编码。
但我发现社区页面和主题页面也会发生同样的事情。
即使用户不是评论的原始创建者,如果 Community/Topic 的 ID 与 USER ID 相同,他也可以删除所有评论。

我只喜欢它启用 USER 模型。我该如何定制这个?

模型/能力.rb

can [:create, :destroy], Comment, {:user_id => user.id}
can [:destroy], Comment, {:commentable_id => user.id}
4

1 回答 1

1

由于您的Comment班级使用多态关联,因此delete当前允许在commentable_id匹配id用户时执行该操作。由于您可以在不同的表中具有冲突的 id,因此您也需要匹配commentable_type。尝试这样的事情:

can [:destroy], Comment, {:commentable_id => user.id, :commentable_type => user.class.name}
于 2013-01-21T21:36:36.390 回答