我有一个奇怪的rails数据库/表单问题。
我有一个包含Courses的表和一个表Prerequisites,它有两列都包含Course_ids(列名为“course_a_id”和“course_b_id”)。
在课程模型中,我有:
:has_and_belongs_to_many(:prerequisites,
:join_table => "prerequisites",
:foreign_key => "course_a_id",
:association_foreign_key => "course_b_id",
:class_name => "Course")
如果我将先决条件放在Console中,则可以使用,如下所示:
Course.find(3).prerequisites = [Course.find(1), Course.find(2)]
然而,此表单字段不允许我将先决条件放在DB中:
<%= f.label :prerequisite, "Prerequisites" %>
<%= f.collection_select(:prerequisites, Course.all, :id, :name,
{:multiple => true}, :multiple => "multiple") %>
在使用值1选择的一个选项发布后发出此错误:
"Course(#-631146998) expected, got String(#77208170)"
并在参数dump:
中"prerequisites"=>["",
"1"]}
我不知道那些“”是如何在params中结束的,并且无法找到另一种创建表单字段的方法。我认为我的模型设置正确。