ActiveRecord::StatementInvalid in StudentsController#zerstören nicht finden Konnten, eine Tabelle 'students_subjects'
Habe ich folgende zwei controller
class Student < ActiveRecord::Base
has_and_belongs_to_many :subjects
end
class Subject < ActiveRecord::Base
has_and_belongs_to_many :semesters
has_and_belongs_to_many :students
end
Und meine Datenbank-Tabellen sind
class CreateSubjects < ActiveRecord::Migration
def self.up
create_table :subjects do |t|
t.string :name
t.timestamps
end
end
def self.down
drop_table :subjects
end
end
class CreateStudents < ActiveRecord::Migration
def self.up
create_table :students do |t|
t.string :name
t.string :dept
t.timestamps
end
end
def self.down
drop_table :students
end
end
Meinem edit, show, erstellen von Subjekt und Schüler gut funktionieren. Aber wenn ich versuchen, zu löschen, zu jedem Thema oder student bekomme ich folgende Fehlermeldung
ActiveRecord::StatementInvalid in SubjectsController#zerstören
Nicht finden konnten, eine Tabelle 'students_subjects'
Scheint es, sollte es eine weitere Tabelle mit dem Namen 'students_subjects" für viele, viele Vereins. Wie mache ich das? Mit Gerüst oder so etwas? Ich habe gerade angefangen zu lernen Schienen.
InformationsquelleAutor asdfkjasdfjk | 2013-12-31
Du musst angemeldet sein, um einen Kommentar abzugeben.
Den Fehler zu sagen, dass Sie fehlen, kann die join-Tabelle in der
has_and_belongs_to_many
Vereins. Ihreedit
,show
,create
vonstudent
undsubject
sollte nur separat arbeiten. Es gibt keine zugeordneten Datensätze in der Datenbank erstellt, da die join-Tabelle fehlt.Erstellen Sie eine migration zur Beurteilung der join-Tabelle. Beachten Sie, dass Sie nicht brauchen ein Modell für diese join-Tabelle.
Update:
Geben Sie den folgenden Befehl aus Ihre rails-Anwendung root-Verzeichnis:
Dann ersetzen Sie den Inhalt der generierte migration-Datei in
db/migrate/
Verzeichnis mit den class-definition oben. Dann nach ausführenrake db:migrate
.Beachten Sie, dass ich verpasst hatte
id: false
imcreate_table
oben genannte Methode zu sagen Schienen, nicht erstellen Sie einen Primärschlüssel für diese Tabelle. Ich habe diese option mit dem update.bitte siehe mein update nach, wie Sie eine migration.
InformationsquelleAutor vee