对于带有OR的for循环内的循环

我有点卡住了。

我想要回复我的post和我的follow_userspost。

我有一个名为“followed_users”的关联,所以我可以调用@ user.followed_users

     

这适用于“follow_users”post。 我还想包括我的post。 所以我的计划是首先检查我的post,然后遍历所有,看看哪个属于我的follow_users。

我的实现是返回我的post,但不是所有的follow_users。

我是在正确的轨道上吗?

   
  • 不,真的不这样做,你不能负担所有对象的循环。

    做这个:

     #in a partial, say _post_details.html.erb 
  • <%= post.user.name %> <%= post.body %>
  • 在您的主视图中:

     <% current_user.followed_users.each do |friend| %> <%= render partial: "post_details", collection: friend.posts, as: :post %> <% end %> <%= render partial: "post_details", collection: current_user.posts, as: :post %> 

    顺便说一句,要小心很可能的N+1查询(粉丝 – >post)。


    在您发表评论后,我建议您这样做:

     ids = current_user.followed_users.map(&:id) + [ current_user.id ] @posts = Post.where(user_id: ids) 

    然后在你看来:

     <%= render partial: "post_details", collection: @posts, as: :post %>