【发布时间】:2010-12-05 00:58:13
【问题描述】:
我正在使用 Cancan 来控制 User 功能,并且最近遇到了一个奇怪的问题:我的部分有一个“破坏”超链接,它有时只对授权用户显示。当我刷新页面时,不知道链接是否存在。
我在Ability.rb 中为我的Event 模型定义了能力,方法如下:
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 %>
谢谢大家。
【问题讨论】:
标签: ruby-on-rails authentication cancan