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。非常感谢!