我有以下协会。
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()搜索,但都出现了错误。有人可以赐教我吗?
答案 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