0

Dans mon application Rails, j'ai un modèle User (plus ou moins construit par l'authentification RESTful), et plusieurs autres modèles appartenant à l'utilisateur. Alors disons, par exemple:Accès aux objets de l'utilisateur dans différents états (Ruby on Rails, authentification RESTful)

utilisateur has_many: messages

poste belongs_to: utilisateur

Partout dans les utilisateurs des ressources que je peux accéder aux variables utilisateur que je me attends. @ user.name, @ user.email, @ user.login, etc. renvoient tous l'objet attendu.

Cependant, je ne peux pas sembler accéder à l'un de ces attributs à partir d'une autre ressource (dans cet exemple, les messages) sans renvoyer nil (nul plutôt que NoMethodError).

Pourquoi est-ce? Il me semble encore plus étrange que je puisse appeler current_user très bien, comme dans current_user.name, current_user.email, mais pas pour l'utilisateur en question.

Répondre

1

Il y a deux utilisateurs dont vous pourriez parler ici.
1) l'utilisateur actuellement connecté
2) l'utilisateur qui le poste appartient à

l'utilisateur actuellement connecté doit pouvoir être accessible par le current_user. l'utilisateur qui le poste appartient devra être réglé dans le contrôleur Messages:

@user = Users.find(@post.user_id) 

ou

@user = @post.user 
+0

Merci pour la réponse. Disons que j'essaie d'accéder au nom de l'utilisateur à qui le post appartient à Posts/show. Le nom serait @ user.name dans la ressource Utilisateurs. Et pour show dans le contrôleur Posts actuellement: @post = Post.find (params [: id], @user). – btw

+0

Si j'essayais d'accéder au nom de l'utilisateur qui a ajouté le post je voudrais (dans le PostsController) définir l'utilisateur: @post = Post.find (params [: id]), puis définissez l'utilisateur @user = @post .utilisateur. Puis dans la vue: Publié par <% = @ user.name%>. HTH –

+0

C'est étrange, vous dites exactement ce à quoi je m'attendrais, mais le problème persiste. Je commence à me demander ce qui pourrait se passer sous le capot que je ne remarque pas. – btw