2011-01-05 11 views
2

Ich suche nach einem Vorschlag, wie zwei Modelle, Teacher und Subject, eingerichtet werden können. Ein Lehrer kann viele Fächer haben und ein Fach kann viele Lehrer haben. Eine andere Sache, die in der Beziehung zwischen den beiden Modellen zu berücksichtigen ist, ist, dass ein Lehrer ein Subjekt erstellen und dem Subjekt weitere Lehrer hinzufügen kann.So richten Sie zwei Modelle mit einer has_many-Verknüpfung ein

Ich glaube, ich bin solide auf den Grundlagen der für jedes Modell ein:

für teacher.rb:

has_many :subjects 

für subject.rb:

has_many :teachers 

und Die Teachers-Tabelle sollte eine subject_id-Spalte haben und die Betreff-Tabelle sollte eine teacher_id-Spalte haben.

Worüber ich nicht sicher bin, ist, wie die Ansichten (und die entsprechenden Controller-Methoden) eingerichtet werden, um das Hinzufügen eines Teachers zu einem Betreff zu ermöglichen.

Alle Vorschläge (oder Links zu Beispielen) werden sehr geschätzt. Zu diesem genauen Fall konnte ich nichts finden.


Strom ein:

  • Standard CRUD für einen Studenten Objekt
  • Standard CRUD für ein Projekt Objekt

Ich bin wahrscheinlich etwas fehlt einfach in, wie diese zu binden Modelle zusammen (andere als den Teil der Änderung has_many zu hattm) und Datensätze in die Tabelle subjects_teachers bekommen, und ich kann immer noch kein gutes Beispiel finden ...

+0

dies Siehe auch Einrichten: http://guides.rubyonrails.org/association_basics.html#the- has_and_belongs_to_many-association – Zabba

Antwort

3

Sie müssen die relationale Tabelle zwischen ihnen erstellen. Es ist unmöglich, eine viele-viele-Beziehung ohne rel Tisch obwohl

Zunächst einmal zu haben, dann ist es ein has_and_belongs_to_many: Themen und has_and_belongs_to_many: Lehrer (gemeinhin als HABTM bezeichnet)

http://guides.rubyonrails.org/association_basics.html#the-has_and_belongs_to_many-association

Lauf

rails g migration subjects_teachers 

öffnen Sie die Migration auf:

create_table :subjects_teachers, :id => false do |t| # ID => FALSE = IMPORTANT 
    t.references :subject 
    t.references :teacher 
    # NO TIMESTAMPS 
end 

run Rake db: migrieren und Sie sollten eingestellt werden!

dann

sehen diese Railscasts für Ihre Controller

http://railscasts.com/episodes/17-habtm-checkboxes

http://railscasts.com/episodes/47-two-many-to-many

+0

Warum löschte jemand meine Railscasts Links?nicht geschätzt – sethvargo

+0

Ich habe deine Antwort ein wenig bearbeitet, leider habe ich die Links nicht bemerkt (seltsam, ich weiß, ich bin verwirrt, warum ich es dort nicht gesehen habe!). Zu guter Letzt, Entschuldigungen - werden in Zukunft viel * vorsichtiger sein. – Zabba

+0

danke - sehr hilfreich mit der Habtm. Das habe ich offensichtlich als Lösung für eine viele/viele Verbindung vermisst. Die erwähnten Railscasts waren auch hilfreich beim Einrichten des HABTM, jedoch liefern sie keine Eingaben in den Controller-Code. Ich muss meine Modelle nicht richtig entwerfen lassen, da ich beim Erstellen eines Themas keine subject_teachers-Datensätze erhalte. Ich bearbeite meine Frage, um weitere Informationen zu meinem aktuellen Setup zu erhalten – daz13

Verwandte Themen