Rails - 在两个相关模型对象之间的项目创建时分配外部id

时间:2013-01-11 04:41:32

标签: ruby-on-rails ruby-on-rails-3 rails-models

在创建一个“很多”模型对象时,我很难在一对多关系中成功分配外键。

更具体地说......我有两个模型CourseSection,其中课程 has_many :sections,以及每个部分< / strong> belongs_to :course。除其他属性外,每个部分都具有外键course_id

我想编写一个名为current_course的辅助方法,这样当我编写create函数时,我可以写current_course.sections.build(params[:section]),它会自动分配外键course_id在创作。换句话说,current_course将获取单击它的类的ID(即/class/1/)并使其等于新创建的部分的course_id。我尝试了@current_course ||= Course.find(params[:course_id]) ..但它在创建时仍然会抛出ID错误。我做错了什么,如何更正我的current_course方法?谢谢!

1 个答案:

答案 0 :(得分:0)

你所做的事情看起来基本正确。

您的create控制器通常在开头就有这样的一行。 (你无法找到毕竟没有创造的东西。)

@course = Course.new(params[:course])

如果您知道自己只构建一个Section,则可能需要在@course.sections.build控制器中执行new。然后,从那里确保您的Courses模型accepts_nested_attributes_for :sections,然后您可以使用Section功能填写视图中的fields_for字段。当您这样做时,您的控制器可以简单地说@course.saveSection将随之保存。

我希望有所帮助,但如果没有,那么请添加一条评论,其中包含您所看到的错误。