2012-11-10 106 views
0

我似乎无法找到一种方法来做到这一点。一些指导将会很棒!ActiveRecord的帮助:其中标签包括

我正在建立一个博客网站的帖子和帖子包含标签。标签和帖子由连接表保持在一起。我可以通过post.tags访问它们。

我试图放在一起搜索显示包含某个标记的所有帖子。 尝试一段时间后,这是我想出了最好的:

def tag 
tag = Tag.find_by_title(params[:id]) 
p = Post.page(params[:page]).per_page(7).all 
@posts = Array.new 
p.each do |p| 
    if p.tags.include? (tag) 
    @posts << p 
    end 
end 

这工作之外的所有分页。我认为必须有一个简单的where子句来简化这一点?

谢谢!

编辑:

这里是我的连接表

enter image description here

+0

请给出您的加入模型或型号代码 – Lichtamberg

+0

@lichtamberg ok ive发布了它。 – Deekor

回答

1

下一个方法应该返回后的标签与标签的数组:

@posts = Post.includes(:tags).where('tags.id' => tag.id) 

你只需要继续你的方法的第一行并添加上面的行。

请注意,要使其正常工作,您应该在模型中使用has_and_belongs_to_many定义您的帖子和标签之间的关系。

+0

非常感谢。 – Deekor