我想获取所有正在关注的项目以及我想要获取数组中所有文章的每个项目以将其传递给视图部分。 但我没有收到对象而是收到了Active Record关系
这是我的代码
@row=[]
@followed_blogs = Follow.where("followable_type == ?","Blog").where(follower_id: current_user.id)
@followed_blogs.each do |blog|
@row << Article.where("blog_id == ?",blog.followable_id)
end
@articles = @row.sort! {|a,b| a.created_at <=> b.created_at}
答案 0 :(得分:2)
@followed_blogs = Follow.
where(followable_type: "Blog").
where(follower_id: current_user.id).
includes(:articles)
@row = @followed_blogs.map(&:articles)
@articles = @row.sort! {|a,b| a.created_at <=> b.created_at}
假设您已在Follow
和Article
之间正确设置了关系,那么这可能会更好。
class Follow < ActiveRecord::Base
has_many :articles
end
class Article < ActiveRecord::Base
belongs_to :follow, as: blog
end
我认为没错,你必须调整它。 http://guides.rubyonrails.org/association_basics.html#polymorphic-associations
正确设置多态关联后,第一行变为:
@followed_blogs = Blog.
where(follower_id: current_user.id).
includes(:articles)
如果用户具有正确的关联(has_many :blogs
或其他内容),它甚至可以成为
@articles = current_user.blogs.includes(:articles).
map(&:articles).
sort! {|a,b| a.created_at <=> b.created_at}
答案 1 :(得分:0)
@f_blogs = Follow.where('followable_type == ?',"Blog").where('follower_id == ?', current_user.id).pluck('followable_id')
@articles = Article.having(blog_id: @f_blogs).group('id')