如何从 rails 关联中的控制器访问数据

how to access data from from controller in rails association

我创建的项目脚手架与阶段具有一对多关联,而阶段脚手架与任务具有一对多关联。在 project#show action 中,我想根据阶段访问任务,但我无法做到这一点。

projects_controller.rb(显示#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

首先,includes 没有任何意义,因为您只有一个 Project 实例。

如果要获取@stages中所有记录的Stage#tasks,可以这样写:

@project = Project.find(params[:id])
@stages = @project.stages
@tasks = Task.where(stage_id: @stages.ids)