D'abord, je ne sais pas si je déclare correctement une variable de session. De plus, je l'ai mis dans le contrôleur d'application, car je sais que cela fonctionnera. S'il y a un meilleur endroit pour mettre cela, alors laissez-moi savoir. Le résultat souhaité est un utilisateur sélectionne l'équipe qu'ils souhaitent que tout leur travail enregistre à la session. Ensuite, lorsque des objets sont enregistrés, ils utilisent la variable de session: Current_Team au lieu de: Current_User. Par défaut de la création, une équipe sera créée pour chaque nouvel utilisateur. C'est pourquoi je demande à la première équipe de chaque utilisateur. Pendant la session, je planifie que l'utilisateur de sélectionner l'équipe, ils fonctionnent / contribuent et la sélection persistent jusqu'à ce qu'ils le changent.
Application_Controller.rb P>
has_many :team_members has_many :users, through: :team_members has_many :roles, through: :team_members end
3 Réponses :
Une fois que vous avez session [: actuel_team] code>, vous pouvez l'enregistrer sur une variable dans n'importe quel contrôleur. Dites par exemple dans le contrôleur d'équipes, vous pouvez faire:
@Current_team = session [: actuel_team] code>. Ensuite, dans la vue, vous pouvez utiliser
@Current_Team code>. P>
C'est définitivement une partie de l'endroit où j'allais mal. Je n'ai pas réalisé que je devais attribuer la valeur de la session Cookie à une variable.
Je vous ai donné un upvote, je reçois toujours une sorte de sortie de hasch à mon avis. # <Équipe: 0x00007FE58F47B360> CODE>
Qu'utilisez-vous à votre vue? Utilisez-vous <% = @Current_Team%>?
Je suppose qu'un utilisateur peut faire partie de plusieurs équipes et (évidemment) une équipe possède de nombreux utilisateurs, votre relation serait approximativement comme celle-ci vous avez déjà dans la bonne direction mais j'ai fait peu changé en xx Je recommande vivement à Lire cet article 4 modèles de mémoisation simples dans Ruby . P> Avis Suivant donc fonctionnera sur votre index p> aussi Comme tous les contrôleurs que tous les contrôleurs héritent de set_current_team code> et ajout la méthode accessor pour obtenir l'instance d'équipe actuelle. p>
actuel_team code> méthode utilise la technique de mémoisation pour cache l'équipe actuelle lors de la demande de sorte que si vous appelez
actuel_team code> plusieurs fois au cours d'une demande, il n'appellera plus que le DB pour obtenir l'enregistrement de l'équipe. P>
Helper_Method CODE> MACRO au-dessus du
SET_CURrent_Team code> qui rend cette méthode d'assistance disponible sur votre vue aussi. P>
applicationController code> p> p>
Jusqu'à présent, cela semble être la meilleure solution. Cependant, je reçois cela comme mon résultat pour
<% = actuel_team%> p>:
C'est l'objet d'impression. Maintenant, si vous avez Nom code> dans le champ code> Table des équipes CODE>, vous pouvez imprimer le nom de l'équipe actuelle à l'aide de
actuel_team.name code>. Comme sage, vous pouvez accéder à toutes les colonnes / attributs de l'objet d'équipe.
mise à jour définir SET set_current_team code> méthode sur
Session [: actuel_team] code> à l'utilisateur sélectionné de l'équipe d'équipe sélectionnée dans Controller # Action strong> qui gère la demande p>
Session [: actuel_team] code> à
nil code> lorsque la déconnexion de l'utilisateur p> p> p>