Ruby on rails 轨道嵌套。每个轨道都无法访问顶级变量

Ruby on rails 轨道嵌套。每个轨道都无法访问顶级变量,ruby-on-rails,each,ruby-on-rails-5,Ruby On Rails,Each,Ruby On Rails 5,当我保存一个新的质询时,该代码将执行,然后它将遍历所有关联的用户,并为质询中的每一天创建数据点 队列和数据点在这个函数中保存得很好,但是第一个循环中的|user |变量在嵌套循环中不起作用。因此,当保存数据点时,它们都缺少:user\u id 我很确定我只是缺少了一些关于范围的东西,或者可能是的不同方式。每个和都有索引,但我似乎无法解决问题 控制器代码段: # loop through all associated users @user_list.each do |user|

当我保存一个新的质询时,该代码将执行,然后它将遍历所有关联的用户,并为质询中的每一天创建数据点

队列和数据点在这个函数中保存得很好,但是第一个循环中的
|user |
变量在嵌套循环中不起作用。因此,当保存数据点时,它们都缺少
:user\u id

我很确定我只是缺少了一些关于范围的东西,或者可能是
的不同方式。每个
都有索引,但我似乎无法解决问题

控制器代码段:

# loop through all associated users
    @user_list.each do |user|
        # create join
        cohort = Cohort.new(:user_id => user, :challenge_id => @challenge.id)
        if cohort.valid?
            cohort.save
        else
            @errors += cohort.errors
        end

        # for each date in range create an empty Datapoint
        date_range.each_with_index do |day, index|
            day_count = index + 1
            datapoint = Datapoint.new(:user_id => user, :challenge_id => @challenge.id, :date => day, :day => day_count)
            if datapoint.valid?
                datapoint.save
            else
                @errors += datapoint.errors
            end
        end
    end

此位错误,因为您正在将复杂对象指定给整数

datapoint = Datapoint.new(:user_id => user, :challenge_id => @challenge.id, :date => day, :day => day_count)
如果
Datapoint
实际上
属于用户
您可以这样做

datapoint = Datapoint.new(:user => user, :challenge_id => @challenge.id, :date => day, :day => day_count)
但是如果未定义
所属的
,则只需存储用户的id即可

datapoint = Datapoint.new(:user_id => user.id, :challenge_id => @challenge.id, :date => day, :day => day_count)

date\u range
在何处以及如何定义?另外,您是否尝试过在
Datapoint.new中向
用户添加
.id
。(:user\u id=>user,:challenge\u id=>@challenge.id,:date=>day=>day\u count)
?@JamesMilani就是这样。谢谢它正在添加修复它的id。非常感谢!