Rails 3 + Concevoir: user_signed_in? pour un autre utilisateur dans la base de données?
Je suis en train de construire une application où je veux ajouter un statut en ligne pour un utilisateur donné.
Je sais que le dispositif est une méthode user_signed_in? construit en pour vérifier si l'utilisateur à l'aide de l'application est signé ou non. Mais quand j'essaie de l'utiliser pour un autre utilisateur comme ceci:
user_signed_in?(user)
user.user_signed_in?
J'ai évidemment obtenir une méthode non définie erreur.
N'Concevoir une méthode pour cela ou dois-je écrire mon propre?
Une approche a été pour stocker l'état en ligne d'un utilisateur donné dans le modèle de l'utilisateur.
Quelle est la meilleure solution pour cela?
Vous devez vous connecter pour publier un commentaire.
Je ne suis pas l'auteur de Concevoir, mais de ce que je peux dire du directeur de l'établissement /de Concevoir ni de garder trace de qui est connecté à.
Le problème avec le fait d'avoir un is_online colonne dans la table User, c'est qu'il est difficile de voir qui est actif sur le site. Je voudrais ajouter une colonne à votre modèle d'Utilisateur appelé last_seen comme une date-heure, et le mettre à jour avec de Concevoir chaque fois que l'utilisateur demande une page. Vous pouvez facilement ajouter un Utilisateur.online_count méthode ou aussi voir si un utilisateur a été vu sur le site web dans les 5 dernières minutes.
J'ai utilisé Concevoir sur mes applications et connu les mêmes problèmes que vous, quand j'ai commencé à travailler avec elle. Vous êtes simplement en utilisant les méthodes d'assistance de manière incorrecte. Si vous souhaitez vérifier si l'utilisateur a une session et est connecté, vous utilisez l'aide en tant que tel:
qui est essentiellement la même déclaration:
Si vous souhaitez vérifier si un utilisateur est connecté, puis vous appelez cela: (où utilisateur est un Modèle d'utilisation de l'Objet)
Utilisation
devise_for :user
dans vos itinéraires.rb.