У меня есть две модели: студент и проект. Студенческие проекты HABTM и студенты проекта HABTM. Вот две модели:Rails HABTM отношения не работают с полиморфными отношениями
class Student < User
has_many :relationships, dependent: :destroy
has_many :employers, through: :relationships
has_and_belongs_to_many :projects, join_table: :projects_students
end
class Project < ActiveRecord::Base
has_many :relationships
belongs_to :employer
has_and_belongs_to_many :students, join_table: :projects_students
end
Как вы можете видеть, студент использует полиморфное наследство от пользователя (таблица пользователь имеет столбец типа, один из значений Student). Вот контроллер, который создает проекты:
def create
@project = current_user.projects.new(project_params)
respond_to do |format|
if @project.save
format.html { redirect_to @project, notice: 'Project was successfully created.' }
format.json { render action: 'show', status: :created, location: @project }
else
format.html { render action: 'new' }
format.json { render json: @project.errors, status: :unprocessable_entity }
end
end
end
def project_params
params.require(:project).permit(:title, :category, :location, :budget,
:description, :projectdoc)
end
проекта и студентов, подключенных через join_table: projects_students:
create_table "projects_students", force: true do |t|
t.integer "student_id"
t.integer "project_id"
end
add_index "projects_students", ["project_id"], name: "index_projects_students_on_project_id", using: :btree
add_index "projects_students", ["student_id"], name: "index_projects_students_on_student_id", using: :btree
Проблема в том, что при создании проекта, то student_id не передается в таблица projects_students. Как я могу это исправить?
Он работает в консоли. Я попытался поместить это в сильные параметры, но это не сработает. Не существует списка флажков. Когда ученик обращается к проекту, метод создания выше завидуется, и я хочу, чтобы этот ученик был учеником. – Philip7899
Я вижу. Я думаю, вы должны использовать «build» вместо «new», когда вы создаете новый проект. – davidfurber
В чем разница? – Philip7899