我试图从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 %>
答案 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 %>