Rails在具有多个条件的控制器中查询

时间:2013-10-30 21:33:04

标签: ruby-on-rails-3 controller

我在节日,类别,提交和策展人(用户)的模型中设置了以下关系。

  • 节日有很多类别。每个类别都有一个节日。
  • 每个类别都有一个或多个策展人(用户),策展人可以有多个类别。
  • 提交内容有一个类别和一个节日(通过它的类别)。
  • “current_user”是登录的用户
  • “current_festival”是目前正在接受新提交的一个节日

当策展人(用户)登录时,他们会查看提交的索引。他们应该只看到他们是策展人的提交(通过类别)。我对如何生成正确的提交列表感到困惑。以下是控制器中的内容:

def index
  @submissions = current_festival.submissions.all
end

这将返回当前节日的所有提交,而不仅仅是current_user是策展人的类别。我想要的是这样的,但我不知道正确的语法:

def index
  @categories = current_user.categories.where(festival_id: current_festival.id)
  @submissions = current_festival.submissions.where( category_id: "one of the @categories" )
end

任何想法正确的语法是什么?

1 个答案:

答案 0 :(得分:2)

这将为您提供属于current_user

创建的类别的所有提交
def index
  category_ids = current_user.categories.where(festival_id: current_festival.id).collect(&:id)
  @submissions = current_festival.submissions.where(category_id: category_ids)
end