как получить доступ к данным из контроллера в рельсовой ассоциации - PullRequest
0 голосов
/ 05 марта 2020

Я создал проект scaffold, который имеет связь один со многими со сценой, а эшафот стадии имеет связь один со многими с задачей. в проекте # show action я хочу получить доступ к задачам на основе этапа, на котором я не могу этого сделать.

projects_controller.rb (show # action)

  def show
    @project = Project.includes({stages: {tasks: {sub_tasks: {sub_sub_tasks: :sub_three_tasks}}}}).find(params[:id])
    @stages = @project.stages

    task_counter = 0
    @tasks = @stages.tasks  #(undefined method `tasks' for nil:NilClass )
    @tasks.each{|s| task_counter += 1 if s.planned_end_date.past? && s.status == 0 || s.status == 2}
  end

1 Ответ

0 голосов
/ 05 марта 2020

Прежде всего, includes не имеет никакого смысла, поскольку вы получаете только один Project экземпляр.

Если вы хотите получить Stage#tasks всех записей в @stages, это будет примерно так:

@project = Project.find(params[:id])
@stages = @project.stages
@tasks = Task.where(stage_id: @stages.ids)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...