Rails有效地在关联表之间查询数据

时间:2017-04-28 06:37:35

标签: ruby-on-rails ruby

假设以下规则

manager has_many serial_tasks
serial_task has_many tasks
task belongs_to project

现在我有一位经理,我如何有效地查询所有项目' id?

这是我写的,但我认为这不是一种优雅的方式。

project_ids = 
manager.serial_tasks.map{|st|
  st.tasks.map{|t|
    t.project.id
  }
}.flatten

1 个答案:

答案 0 :(得分:1)

你可以添加

has_many :tasks, through: :serial_tasks

到Manager类。查询应该非常简单。

如果您真的想获得ID,那么您可以执行以下操作:

project_ids = manager.tasks.pluck(:id)