如何从 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)
我创建的项目脚手架与阶段具有一对多关联,而阶段脚手架与任务具有一对多关联。在 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)