1
votes

Obtenir l'identifiant de l'utilisateur actuel dans le modèle

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?


9 commentaires

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.


3 Réponses :


0
votes

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>


0 commentaires

0
votes

Il n'est pas possible d'obtenir current_user dans le modèle à moins que vous ne le transmettiez depuis le contrôleur.


0 commentaires

1
votes

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


0 commentaires