Ich habe mit einigen Problemen mit dem Hinzufügen eines neuen Datensatzes in meiner Schüler-Tabelle ausgeführt. Grundsätzlich habe ich 3 Tabellen, die miteinander verbunden sind: Studenten, Lehrer, eingeschriebene Themen und Themen.ActiveRecord :: AssociationTypeMismatch - Ruby on Rails
Das Hauptproblem dabei ist, dass die Themen Tabelle deklariert wurde: string sowohl Schüler und Lehrer Tisch bei der Migration, sondern für ein Array zu fragen statt:
Class CreateStudents < ActiveRecord::Migration[5.0]
def up
create_table :students, :id => false do |t|
t.integer "student_id", :auto_increment => true, :primary_key => true
t.string "first_name", :limit => 25
t.string "last_name", :limit => 50
t.string "email", :default => ' ', :null => false
t.string "birthday"
t.string "subjects"
t.string "username", :limit => 25
t.string "password_digest"
t.timestamps
end
end
class CreateTeachers < ActiveRecord::Migration[5.0]
def up
create_table :teachers, :id => false do |t|
t.integer "teacher_id", :auto_increment => true, :primary_key => true
t.string "first_name"
t.string "last_name"
t.string "email", :default => ' ', :null => false
t.string "birthday"
t.string "subjects"
t.string "username", :limit => 25
t.string "password_digest"
t.timestamps
end
end
class CreateSubjects < ActiveRecord::Migration[5.0]
def up
create_table :subjects, :id => false do |t|
t.integer "subject_id", :auto_increment => true, :primary_key => true
t.string "subject_name"
t.timestamps
end
end
class CreateEnrolledSubjects < ActiveRecord::Migration[5.0]
def up
create_table :enrolled_subjects, :id => false do |t|
t.integer "subject_id"
t.integer "teacher_id"
t.integer "student_id"
end
end
Unten ist mein Code, wenn eine Aufzeichnung innerhalb Schienen Hinzufügen Konsole:
new_studend = Student.create(:student_id => 1, :first_name => 'Karl', :last_name => 'Geek', :email => '[email protected]', :birthday => '12/04/1995', :subjects => ["English"], :username => 'samnorton2', :password => 'Grace02112')
ich auch versucht:
new_student = Student.create(:student_id => 1, :first_name => 'Jos', :last_name => 'Norton', :email => '[email protected]', :birthday => '12/05/1995', :subjects => 'English', :username => 'samnorton2', :password => 'Grace02112')
Aber ich habe einen Fehler beides:
Wenn ich string 'Englisch' verwendet:
NoMethodError: undefined method `each' for "English":String
Als ich Array verwendet: Themen => [ 'Englisch']
ActiveRecord::AssociationTypeMismatch: Subject(#70237743894000) expected, got String(#70237706174560)
Ich bin Ich bin mir nicht sicher, was hier passiert. Aber es braucht Zeit, um mich zu lösen. Für meine Modelle gebe ich einfach die ff-Codes ein:
Irgendeine Idee? Entschuldigung, ich bin eine neue ROR. Hoffe, jemand kann mir helfen und in der Laienzeit erklären, was hier passiert.
Ich sehe Ihre 'Themen' Tabelle hier nicht. Wenn Sie möchten, dass Student viele Themen und Betreff viele Studenten hat, dann benötigen Sie eine Joins-Tabelle. – HarlemSquirrel
http://guides.rubyonrails.org/association_basics.html#the-has-and-belongs-to-many-association – HarlemSquirrel
bearbeitet bereits HarlemSquurnett –