如何使用Opinio gem删除/销毁评论

时间:2013-07-06 03:11:13

标签: ruby-on-rails cancan

我正在使用Opinio gem来处理我的某个模型上的评论。我也使用cancan进行验证。

我可以添加评论,没有问题,但我无法弄清楚如何删除评论。我只是得到一个文本字符串,说“未经授权”。而已。

这是我的渲染代码:

<!-- _comment.html.erb (generated by Opinio) -->
<% reply = defined?(reply) ? reply : false %>
<dt id="comment_<%= comment.id %>"><%= link_to comment.owner.name, comment.owner %></dt>
<dd class="well">
  <%= simple_format(comment.body) %>
  <% if can? :delete, comment%>
    <%= link_to t('opinio.actions.delete'), comment_path(comment), :method => :delete%>
  <% end %>
  <% if Opinio.accept_replies && !reply %>
    <span><%= link_to t('opinio.actions.reply'), reply_comment_path(comment), :remote => true %></span>
    <ul id="comment_<%= comment.id %>_replies" class="replies">
      <%= render :partial => "opinio/comments/comment", :collection => comment.comments, :locals => {:reply => true} %>
    </ul>
  <% end %>
</dd>

奇怪的是我的初始if can? :delete, comment有效,所以我确实得到了删除链接。我在这里删除了:remote => true,以便我可以看到实际发生的情况。

这是我的能力.rb:

class Ability
  include CanCan::Ability

  def initialize(user)
    user ||= User.new # guest user (not logged in)
    if user.has_role? :admin
      can :manage, :all
      can :access, :rails_admin   # grant access to rails_admin
      can :dashboard
    else
      can :read, :all
      can :delete, Comment, :owner_id => user.id
    end
  end
end

我查看了source code的意见,我发现我认为测试失败的测试:

#In opinio gem: comments_controller.rb
if can_destroy_opinio?(@comment)

任何帮助都会很棒。

1 个答案:

答案 0 :(得分:0)

您是否可以继承所覆盖的comments_controller并覆盖can_destroy_opinio?如果没有,您是否可以重新打开意见comments_controller并重新定义can_destroy_opinio(通常称为猴子补丁)?