Cancanを使用してUser
の能力を制御しています。最近、奇妙な問題に遭遇しました:my partialには、ページを更新すると、リンクが存在するかどうかはわかりません。Cancanが承認されたリンクを常に表示するとは限りません
私は次のようにAbility.rb
の私Event
モデルの能力を定義した:
can [:create, :update, :destroy], Event do |event|
user.regattas(true).include?(event.regatta)
end
何かが最近変更されています場合には、私は、キャッシュされた関連付けを使用してからシステムを防ぐためにregattas(true)
を使用しています。
私のrspecテストでは、これは私のテストAbility.rb
と私のEventsController
テストの両方で、現在のユーザーにはうってつけです。
ここに破壊があります。
<% if can? :destroy, event %>
<td><%= link_to 'Destroy', event, :confirm => 'Are you sure?', :method => :delete %></td>
<% end %>
ちらつきを修正する方法について何かアドバイスをし、常にのために表示する「破壊」リンクを取得:私は、ユーザーがevent
を破壊する能力を持っていたときに表示したいという、私の_event.html.erb
部分にハイパーリンクを破壊します許可されたユーザーですか?他の誰かがこの問題にぶつかりましたか?
詳しい背景:私は、コードの別の部分のために、この問題を持っていない、部分的に、ここに示されていない:
<% if can? :update, @regatta %>
<%= link_to 'Edit Regatta Info', edit_regatta_path(@regatta) %> |
<% end %>
おかげで、すべてを。