给定与另一个ActiveRecord类(例如标签)关联的ActiveRecord类(例如帖子),如何仅选择与具有特定属性值的标签关联的帖子(例如Tag.name =“Music” “)。
到目前为止,我在Posts上定义了一个类方法:
def self.tag_filter(tag_name, posts)
unless tag_name == '' || posts == nil
postlist = posts
posts = []
postlist.all.each do |post|
post.tags.each do |tag|
if tag.name == tag_name
posts<<post
end
end
end
end
posts
end
在控制器中使用它,如下所示:
def posts_filter
@user = current_user
@posts = @user.posts
tag_filtered_posts = Post.tag_filter(params[:tag_select], @posts)
..
end
但是从一开始就感觉不对,我觉得这应该更容易实现。我错过了什么?