Rails 4,嵌套关联搜索

时间:2014-09-15 09:31:44

标签: ruby-on-rails ruby activerecord associations where

我有以下协会。

class Farm < ActiveRecord::Base
    has_many :crops
end

class Crop < ActiveRecord::Base
    belongs_to :farm
    has_many :seed_batches
end

class SeedBatch < ActiveRecord::Base
    belongs_to :crop
    has_many :tasks, through: :task_batches
end

class Task < ActiveRecord::Base
    has_many :seed_batches, through: :task_batches
end

class TaskBatch < ActiveRecord::Base
    belongs_to :task
    belongs_to :seed_batch
end

从本质上讲,农场有很多农作物。每种作物都有很多种子批次。每个种子批次都有很多任务。

我的问题是:我怎样才能知道农场ID的所有任务?

我尝试了很多方法.where()搜索,但都出现了错误。有人可以赐教我吗?

2 个答案:

答案 0 :(得分:0)

尝试

  Farm.find(1).crops.each(&:seed_batches).collect(&:tasks)

答案 1 :(得分:0)

您应该能够为Crop和Farm定义has_many :tasks

class Farm < ActiveRecord::Base
    has_many :crops
    has_many :tasks, through: :crops
end

class Crop < ActiveRecord::Base
    belongs_to :farm
    has_many :seed_batches
    has_many :tasks, through: :seed_batches
end

然后您应该可以使用Farm.find(id).tasks

访问所有任务