Я работаю над приложением глубокой ассоциации. Строка относится к уровню планирования, уровень планирования относится к одной или нескольким программам.Отображение has_many,: через записи ассоциации
class Program < ActiveRecord::Base
has_and_belongs_to_many :planning_levels
has_many :stories, :through => :planning_levels
end
class PlanningLevelsPrograms < ActiveRecord::Base
end
class PlanningLevel < ActiveRecord::Base
has_and_belongs_to_many :programs
has_many :stories
end
class Story < ActiveRecord::Base
belongs_to :planning_level
end
В программе показа страницы я хотел, чтобы отобразить программу, каждый уровень планирования и агрегатная история рассчитывать для каждого уровня планирования.
Я не уверен, как получить доступ к модели Story со страницы программы.
Следующие работы отлично подходят для отображения каждого уровня планирования, принадлежащего Программе.
<% @program.planning_levels.each do |p| %>
<p><%= p.name %></p>
<% end %>
... но я не знаю, как сделать следующую работу для каждого отображаемого уровня планирования. Как мне получить доступ к модели Story из программы? Есть ли что-то в контроллере программы, которое мне не хватает. Заранее спасибо!
@program.planning_level.stories.count(:id)
'@program.planning_levels.each {| p | p.stories.count} 'должен сделать это. '@ program' не отвечает на' planning_level', потому что это отношение 'has_many', а' ActiveRecord :: Relation', возвращаемое 'planning_levels', не знает о' story', но каждый экземпляр, содержащийся в Relation. Обратите внимание, что это может вызвать проблему «n + 1», поэтому вы можете предварительно загрузить эти данные при настройке '@ program' – engineersmnky