我正在使用 Cancan 来控制User
能力,并且最近遇到了一个奇怪的问题:我的部分有一个“破坏”超链接,它有时只对授权用户显示。当我刷新页面时,不知道链接是否存在。
我通过以下方式为我的Event
模型定义了能力:Ability.rb
can [:create, :update, :destroy], Event do |event|
user.regattas(true).include?(event.regatta)
end
我regattas(true)
用来防止系统使用缓存的关联,以防最近发生了变化。
在我的 rspec 测试中,这对当前用户非常有用,无论是在我的测试中还是在我的Ability.rb
测试中EventsController
。
这里是破坏。在我的部分销毁超链接,_event.html.erb
我只想在用户有能力销毁时出现event
:
<% if can? :destroy, event %>
<td><%= link_to 'Destroy', event, :confirm => 'Are you sure?', :method => :delete %></td>
<% end %>
关于如何修复闪烁并让授权用户始终显示“销毁”链接的任何建议?有没有其他人遇到过这个问题?
更多背景:我对另一段代码没有这个问题,而不是部分代码,如下所示:
<% if can? :update, @regatta %>
<%= link_to 'Edit Regatta Info', edit_regatta_path(@regatta) %> |
<% end %>
谢谢大家。