Ruby on rails 在的第三层上使用.build方法在编辑时有很多关系

Ruby on rails 在的第三层上使用.build方法在编辑时有很多关系,ruby-on-rails,nested-forms,builder,Ruby On Rails,Nested Forms,Builder,我正在建立一个目标日历,其中我有以下几点关系 CalEntry has_many :goals Goals has_many :completed_goals has_many :planned_goals CompletedGoals has_many :completed_times PlannedGoals has_many :planned_times 正如您所见,每个日历日都包含许多目标,这些目标又被分解为已完成的目标和计划的目标。每一个都有对应于在

我正在建立一个目标日历,其中我有以下几点关系

CalEntry 

  has_many :goals

Goals 
  has_many :completed_goals
  has_many :planned_goals 

CompletedGoals
  has_many :completed_times

PlannedGoals
  has_many :planned_times
正如您所见,每个日历日都包含许多目标,这些目标又被分解为已完成的目标和计划的目标。每一个都有对应于在该活动上花费的时间块数量的时间。在控制器中使用“编辑”操作时出现问题。如果正在编辑的CalEntry对象下的特定目标没有任何记录的时间,我希望能够为正在编辑的CalEntry构建多个时间块。这就是我所拥有的:

def edit
  @cal_entry = CalEntry.find(params[:id])
  @goal_id = params[:goal_ref]
  goal = @cal_entry.goal.find(@goal_id)
  completed_goal = goal.completed_goals.first
  completed_goal.completed_times.build
end
这似乎不起作用,因为@cal_条目对象似乎不包含已完成_时间的新构建实例。当我将@cal_entry对象上使用的find方法替换为.build时,它会为嵌套对象的整个树构建一个全新的实例,这不是我想要的。我只希望完成的_时间构建几个额外的实例。关于如何在控制器中为深度嵌套的对象构建新实例,我肯定缺少一些简单的东西

谢谢你的帮助


Em

欢迎来到SO!您缺少ActiveRecord关联的基础知识。请在这里阅读,谢谢!我又看了一遍文档,找不到与我的问题有关的任何具体内容。我没有列出我的整个模型,我只是简化了它们,去掉了所有的,为简化起见,接受\u嵌套的\u属性\u和其他自定义数据库调用,但也许我应该包含它们以避免混淆?问题似乎是我试图在第二层关联上使用构建方法,而不是从第一层开始,这似乎可行。对象的第一层已经存在,所以我尝试加载它,并对第三层关联的完成次数或计划次数使用构建方法。您看到了更多的具体问题吗?我可能在指南中遗漏了一些东西,但我似乎找不到它@uDaY这可能不可能吗?我想stackoverflow对我来说不太管用。如果有人读了这篇文章,可以让我知道我的问题出了什么问题,那就太好了!