导航嵌套的has_many

时间:2012-10-23 10:09:37

标签: ruby-on-rails-3

我有嵌套的has_many关联

项目有很多部分 部分有很多任务 任务有很多工作

是否有更好的方法来获得与项目相关的所有工作而不是

project.parts.each do |p|
  p.tasks.each do |t|
    t.jobs.each do |j|
      ...
    end
  end
end 

由于

1 个答案:

答案 0 :(得分:1)

您可以在has_many模型中定义through方法时,在#jobs选项中添加Project关联。

例如:

class Project < ActiveRecord::Base
  has_many :parts
  has_many :tasks, through: :parts

  def jobs
    jobs = []
    tasks.each {|t| jobs << t.jobs }
    jobs.flatten
  end
end