J'ai un modèle qui ressemble à ceci:Rails: Ajout de méthodes aux modèles pour effectuer des contrôles basés sur current_user?
class Comment < ActiveRecord::Base
...
#allow editing comment if it is moderated and the user passed-in
#is the one that owns the comment
def can_edit?(user)
moderated? and user.Type == User and user.id == self.user_id
end
...
end
Et un appel en vue:
<%= link_to 'Show Comment', @comment if @comment.can_show?(current_user) %>
Je dois écrire beaucoup de ces méthodes dans de nombreux modèles différents - sorte de contrôles de validation voir si current_user est autorisé à faire quelque chose sur un modèle.
Mais il semble lourd - en particulier la nécessité de vérifier que le user
transmis est en effet un objet de type User
.
Qu'est-ce qu'une façon propre et pratique de faire ce genre de chose? Suis-je sur la bonne voie? (C.-à-Dois-je ajouter de telles méthodes à un modèle ou un autre)
Remarque
Je suis en utilisant des requêtes scope pour obtenir les commentaires et les autres modèles, mais dans certains cas, je ne peux pas la portée de la requête donc je dois utiliser les méthodes
can_xxxx?
Ps. Est-ce que ce que je fais est considéré comme un «gros modèle»?
Merci beaucoup *. Cette approche semble plus propre. Je suppose que vous avez maintenant beaucoup de compréhension en profondeur à faire au sujet de votre technique! – Zabba