J'utilise Cancan pour contrôler User
capacités, et j'ai récemment rencontré un problème étrange: mon lien partiel a un lien hypertexte "détruire" qui apparaît seulement parfois pour les utilisateurs autorisés. Lorsque je rafraîchis la page, il n'y a pas de savoir si le lien existera ou non.Cancan ne montre pas toujours le lien autorisé
J'ai des capacités pour mon modèle défini à Event
Ability.rb
de la manière suivante:
can [:create, :update, :destroy], Event do |event|
user.regattas(true).include?(event.regatta)
end
J'utilise regattas(true)
pour empêcher le système d'utiliser les associations mises en cache, dans le cas où quelque chose a changé récemment.
Dans mes tests rspec, cela fonctionne très bien pour l'utilisateur actuel, à la fois dans mes tests pour Ability.rb
et mes tests EventsController
.
Voici la destruction. détruire lien hypertexte dans mon _event.html.erb
partielle, que je veux seulement apparaître lorsque l'utilisateur a la capacité de détruire event
:
<% if can? :destroy, event %>
<td><%= link_to 'Destroy', event, :confirm => 'Are you sure?', :method => :delete %></td>
<% end %>
Des conseils pour savoir comment fixer le vacillement et obtenir le lien « Destroy » pour montrer toujours pour utilisateurs autorisés? Est-ce que quelqu'un d'autre a rencontré ce problème?
Plus fond: Je n'ai pas cette question pour un autre morceau de code, et non dans une partielle, ici:
<% if can? :update, @regatta %>
<%= link_to 'Edit Regatta Info', edit_regatta_path(@regatta) %> |
<% end %>
Merci, tout.