act_as_followers获取我关注的用户的所有帖子

时间:2017-01-09 23:05:57

标签: ruby-on-rails ruby-on-rails-4 acts-as-follower

我试图从Posts获取所有Users。我正在使用act_as_follower宝石。用户遵循profile模型,Posts属于User

我的用户模型:

  acts_as_follower

用户遵循的个人资料模型:

  belongs_to :user
  acts_as_followable

发布模型:

  belongs_to :user

My Post Controller.rb:

  def follow
    @profile = Profile.find(params[:id])
    current_user.follow(@profile)
    redirect_to :back
  end

  def unfollow
    @profile = Profile.find(params[:id])
    current_user.stop_following(@profile)
    redirect_to :back
  end

我尝试使用提供的follows_by_type方法实现类似的操作:

@posts = current_user.follows_by_type('Post').order("created_at DESC")

但问题是用户遵循个人资料模型,但在这里我正在寻找一种类型' Post'。

修改

在我的索引控制器中,我需要设置以下内容:

@favoritePost = Post.where(user_id: current_user.all_follows.pluck(:id))

在视图中iv实现了这个:

<% if user_signed_in? %>
   <%@favoritePost.each do |post| %>
      <%= post.title %>
   <% end %>
<% end %>

2 个答案:

答案 0 :(得分:1)

宝石可让您关注多个模型,并follows_by_type('Post')过滤您关注的帖子。

您要做的是返回您关注的用户的帖子。

控制器

@posts = Post.where(user_id: current_user.all_following.pluck(:id))

查看

<% @posts.each do |post| %>
  <%= post.title %>
<% end %>

答案 1 :(得分:0)

我制定了这个解决方案,可能不是最好的,但它可以根据需要运行。

在我的控制器中我设置了它:

@following = current_user.all_following
@followposts = @following.each do |f|
  f.user.id
end

在我看来,我已经设定了这个:

<% @followposts.each do |f| %>
  <% f.user.posts.each do |g| %>
    <%= g.title %>
  <% end %>
<% end %>