J'ai un tableau d'affichage. Un User
peut créer un nouveau Discussion
. Un User
peut également créer un nouveau Post
à un Discussion
.has_many: à travers
user.rb
has_many :discussions
has_many :replies, through: :discussions, source: :posts
Ainsi, un Discussion
a beaucoup Posts
appartenant à de nombreux Users
. Sur ma page show
Je veux afficher tous les Posts
et leurs Users
correspondants. Je sais que je peux obtenir un User's
postes avec user.replies
. Mais je ne peux pas comprendre comment faire le contraire: obtenir le User
si j'ai le Post
?
Voici ce que j'ai jusqu'à présent:
<% @posts.each do |post| %>
<div class="discussion_right">
<div class="discussion_head">
<% t = post.created_at %>
<%= t.strftime("Posted on %b %-d, %Y %l:%M %P") %>
</div>
<div class="discussion_body">
<%= post.body %>
</div>
</div>
<div class="discussion_left">
<div class="discussion_head">
<%= post.user.first_name %>
</div>
</div>
<% end %>
discussion.rb
belongs_to :user
has_many :posts
post.rb
belongs_to :discussion
évidemment la ligne post.user.first_name
ne fonctionne pas ...
Voici comment Je crée un nouveau post: '@discussion = current_user.discussions.build (params [: discussion])' mais cela ne fait que définir l'argument de discussion de la publication et non l'id_utilisateur de la publication. Comment puis-je avoir les deux ensemble? (J'utilise 'accept_nested_attributes_for: posts' pour définir les valeurs de Post) – mikeglaz
vous devez passer manuellement le' user_id' au hachage du post ou ajouter un 'hidden_field' pour le' user_id' dans la vue. – jvnill
Si 'has_many: through' me donne des messages pour chaque utilisateur avec la syntaxe user.replies, j'ai l'impression qu'il doit y avoir une connexion de chaque poste à son utilisateur. – mikeglaz