Ich versuche, eine App mit einem "Personen" -Modell, einem "Ereignis" -Modell und einem "event_person" -Modell zu erstellen, um die Details zu speichern, an denen die Leute teilnehmen welche Ereignisse.So richten Sie ein Durchgangsmodell in Ruby on Rails ein
Ich habe dies eingerichtet, so gibt es viele Ereignisse für jede Person, die durch das event_person-Modell beziehen. Allerdings bekomme ich beim Ausführen der App einen Fehler und ich kann nicht verstehen, was ich falsch gemacht habe.
Person Modell:
class Person < ActiveRecord::Base
belongs_to :team
has_many :events, through: :event_people
validates :first_name, presence: true, length: { maximum: 255 }
validates :last_name, presence: true, length: { maximum: 255 }
validates :email, presence: true, length: { maximum: 255 }
scope :ards, ->{ where("team_id = ?",2)}
end
Event-Modell:
class Event < ApplicationRecord
belongs_to :people
validates :name, presence: true
end
Event_person Modell:
class EventPerson < Event
belongs_to :people
belongs_to :events
#accepts_nested_attributes_for :events, :people
validates :role, presence: true, length: { maximum: 20 }
end
Der Fehler, den ich bekommen ist
Could not find the association :event_people in model Person
wenn ich versuche, und einen Eintrag in der Personen-Modell zeigen, und zeigt eine Zeile in meiner people_controller.rb Datei:
def show
@people = Person.find(params[:id])
@events = @people.events
end
Die Linie ist es @events = @people.events
als das Problem beleuchtet, aber wie ich kann nicht scheinen zu finde heraus, was ich falsch gemacht habe.
Alle Hinweise sehr geschätzt.
Dank
Vielen Dank dafür. Bin ein Newcomer in all diesen MVC/Ruby on Rails-Sachen, also habe ich Mühe, mich mit der Singularität/Pluralität der Namenskonventionen vertraut zu machen. Ich habe die vorgeschlagenen Änderungen vorgenommen und einen neuen interessanten Fehler erhalten: 'Mysql2 :: Fehler: Unbekannte Spalte 'event_people_events.person_id' in 'Where-Klausel': SELECT' events'.* FROM 'Ereignisse' INNER JOIN' Ereignisse' 'event_people_events' ON' Ereignisse'.id' = 'event_people_events''event_id' WHERE' event_people_events'.person_id' = 6' –
Es sucht nach einer Tabelle namens event_people_events, die ist falsch, und ich vermute, irgendwo liegt ein Problem mit der Namensgebung. Aber wo? –
Ich fand es heraus: 'Klasse EventPerson