Rails データベース/フォームに奇妙な問題があります。
Courses を含む 1 つのテーブルと、Course_id を保持する 2 つの列を持つ 1 つの Prerequisites テーブルを取得しました (列は「course_a_id」および「course_b_id」と呼ばれます)。
Course モデルには次のものがあります。
:has_and_belongs_to_many(:prerequisites,
:join_table => "prerequisites",
:foreign_key => "course_a_id",
:association_foreign_key => "course_b_id",
:class_name => "Course")
このSOの回答から
これは、コンソールで前提条件を次のように設定すると機能します。
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 で 1 つのオプションを選択して投稿した後、このエラーが発生します。
"Course(#-631146998) expected, got String(#77208170)"
およびパラメーターダンプで:
"prerequisites"=>["",
"1"]}
その "" がどのように params に入ったのかわかりませんし、フォーム フィールドを作成する別の方法がわかりません。私のモデルは正しく設定されていると思います。