带有has_many的Rails表单 - 选择哪种型号?

时间:2012-06-25 04:53:31

标签: ruby-on-rails-3 associations

我有以下型号:

Student has_many :subjects, :through => :classes

Subject has_many :students, :through => :classes

Class belongs_to :subject
      belongs_to :student

模型类有一个额外的属性(在subject和students表的外键中),称为level。

基本上我希望能够有一个表格让学生选择一个主题并将该主题与其记录联系起来。所以,我有这个:

ClassesController < ApplicationController

def new
 @list_of_subjects = Subject.all
 # What should I do here?
end

我的问题是:我应该如何为表单创建对象?它应该是哪个模型,主题,学生还是班级?我希望能够在班级表格中创建一个与学生和学生选择的科目相关的记录,但我不知道我做错了。

由于

1 个答案:

答案 0 :(得分:0)

我认为你不能创建一个名为Class的模型,因为它是一个关键字,但这既不在这里也不在那里......

首先,我认为您的控制器和视图应该使用Student,因为这是选择这些内容的学生。接下来,我认为您要做的是在accepts_nested_attributes_for :class模型中添加Student,该模型允许您从Class创建Student连接器模型的实例。

你想要做的事听起来有点像我试图做的事情。我在那里有完整的代码。

Using nested attributes to easily select associations in a form

我后来在这个问题中对它进行了一些改进,以使代码不那么可怕:

Rails: How do I prepend or insert an association with build?

我知道现在已经很晚了,但我希望有所帮助。