我正在使用Cancan来控制User
的能力,并且最近遇到了一个奇怪的问题:我的部分有一个“销毁”超链接,有时仅供授权用户使用。当我刷新页面时,不知道链接是否存在。Cancan并不总是显示授权链接
我在这样定义的能力为我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 %>
感谢所有。