Comment obtenir l'identifiant de l'utilisateur actuel dans un modèle comme post.
def read? if self.users.ids.include? @current_user 'read' else 'unread' end end
Si j'essaie d'utiliser en tant qu'utilisateur @current, cela ne prend pas. Même en passant par le contrôleur?
3 Réponses :
La méthode Helpers n'est pas directement accessible à l'intérieur du modèle, pour y accéder, vous devez l'appeler explicitement comme ceci -
obj = MyModel.first obj.read?(current_user)
Mais je vous suggère de passer current_user code> comme argument dans une méthode comme celle-ci -
class MyModel < ApplicationRecord #current_user = ApplicationController.helpers.current_user def read?(user) return self.users.ids.include?(user) ? true : false end end
Pour que ce soit un moyen pratique d'utiliser cette méthode
current_user = ApplicationController.helpers.current_user
p>
Il n'est pas possible d'obtenir current_user
dans le modèle à moins que vous ne le transmettiez depuis le contrôleur.
transmettez l'utilisateur partout où vous pouvez obtenir la valeur
def read?(user) if self.users.ids.include? user.id 'read' else 'unread' end end
Quel est votre objectif pour connaître l'identifiant de l'utilisateur actuel dans le modèle?
Pourquoi ne pas passer l'identifiant comme argument?
lu? (current_user.id)
?@mechnicov pour vérifier s'il visite la page de publication ou non
C'est hors de la logique du modèle
@RAJKUMARPALANISAMY Pouvez-vous jeter un œil à la réponse donnée ci-dessous, faites-le moi savoir pour plus d'informations.
Copie possible de Accéder à current_user dans le modèle
Merci @ Зелёный a eu une idée en passant id comme argument
Merci @Gabbar. obtenu une réponse en passant l'argument comme id
@Rajkumar C'est exactement ce que j'ai expliqué dans la réponse ci-dessous, n'hésitez pas à accepter / voter pour les futurs chercheurs SO.