2014-09-15 5 views
0

У меня есть следующие ассоциации.Rails 4, поиск вложенных ассоциаций

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

Попробуйте

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

Спасибо! оно работает! Вау. Все время, о чем я думал из «Задачи», я узнал, принадлежат ли они к одной ферме. Но я совершенно не видел этого с другой стороны! Перспектива ... Спасибо! –

+0

без проблем! рад, что сработало! –

0

Вы должны быть в состоянии определить 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