Bonjour, > Lors de l'affichage, pour les messages appartenant au "current_user", je > veux proposer des options spéciales : éditer et supprimer. La question > est : comment savoir qu'un message appartient au current_user ? > > Je compte procéder comme suit : > > dans la classe message, créer la méthode suivante : > > def belongs_to?(user_id) > begin > self.user_id == user_id > end
Comme ActiveRecord redéfini l'identité des objets, tu peut écrire simplement @message.user == current_user Attention, cependant, ce test peut entraîner une requête supplémentaire par message afin de charger l'objet user. Pour éviter ça, il suffit de charger les users en même temps que les messages. - Soit dans la déclaration de l'association topic has_many "messages" :include => [ User ] - Soit au moment de charger les messages @messages = @topic.messages.find(:all, :include => [ User ]) > Ensuite, dans la vue, selon le resultat de > message.belongs_to?(current_user.id), j'afficherai ou pas les options > "edit" et "delete". > > Y a-t-il une meilleure solution, par exemple utilisant @messages et > current_user.messages, me permettant de m'affranchir de cette méthode > supplémentaire ? Une collection ActiveRecord répond aux même messages qu'un Array. tu peut aussi utiliser : current_user.messages.member?(@message) Mourad --~--~---------~--~----~------------~-------~--~----~ Vous avez reçu ce message, car vous êtes abonné au groupe "Railsfrance" de Google Groups. Pour transmettre des messages à ce groupe, envoyez un e-mail à l'adresse [email protected] Pour résilier votre abonnement envoyez un e-mail à l'adresse [EMAIL PROTECTED] -~----------~----~----~----~------~----~------~--~---
