通过rails中的相关模型属性筛选索引视图

时间:2014-12-04 23:42:35

标签: ruby-on-rails activerecord has-and-belongs-to-many

我有一个rails 4,它有一个与标签模型相关的Post模型的habtm关系。 标签具有名称字段和类别字段。多个标签可以具有相同的类别。

我需要一个只显示至少有一个属于“foo”类别标签的帖子的视图。 Foo是静态的,永远都是“foo”。

我已经能够在我的帖子控制器中使用此代码使其工作:

def myview
   ids = []
   Tag.where(category: 'foo').each do |tag|
     tag.posts.each do |post|
       ids << post.id
     end
   end
   @posts = Post.where(id: ids).all
 end

尽管工作我的代码看起来很难读。

我确信rails提供的方式类似于“@posts = Post.where标签类别包括'foo'.all”,但我无法找到方法。我确定我错过了一些非常虚伪的东西。

1 个答案:

答案 0 :(得分:1)

Post.joins(:tags).where('tags.category =?',“foo”)。all

评论中的答案是,例如,您不希望tag查询,但可能希望在您的视图中包含与tag相关的一些信息。使用includes,您将避开N+1 problem