2017-05-10 2 views
0

Ich möchte den Namen Wert aus dem Modell Organiser durch Modell Event erhalten.Abrufen von 'name' aus model.model.name

Meine Klasse Organiser:

class Organiser < ActiveRecord::Base 
    belongs_to :customer 
    has_many :events 
end 

Mein Modell Event:

class Event < ActiveRecord::Base 
    belongs_to :customer 
    belongs_to :location 
    belongs_to :organiser 
    has_many :subscribers 
end 

In Grails, das ist ein einfacher Anruf:

def eventInstance = Event.find.... 

def organiserInstance = eventInstance.organiser 

organiserInstance.name gab mir den Namen des Veranstalters .

Wie wird das in Ruby on Rails gemacht? Ich habe versucht:

@orgName = @eventInstance.organiser.name 

aber dann bekomme ich einen Fehler:

undefined method `organiser' for #<Event::ActiveRecord_Relation:0x007f86152ef098> 
+0

Wirklich, wirklich flach nitpick: Rails ist über die Konvention über Konfiguration, und es packt wirklich einen Schlag, wenn Sie seine Namenskonventionen halten (https: //gist.github.com/alexpchin/f5d2be2ef3735889d315). Sie werden auf jeden Fall zukünftige, sonst vermeidbare Kopfschmerzen vermeiden, wenn Sie ihm folgen. :) –

Antwort

1

Der Fehler bedeutet, dass Ihre @eventInstance in der Tat ist eine Sammlung, nicht eine einzige Instanz.

Sie möchten zunächst @eventInstance als eine Instanz des Modells Event festlegen. Dann wird Ihr Code funktioniert:

@eventInstance = Event.first 
@orgName  = @eventInstance.organizer.name 

P. S. Ruby-Konvention ist Variablen Schlange Fall zu nennen, nicht Fall Kamel:

@event_instance = Event.first 
@org_name  = @event_instance.organizer.name 
+0

Nein ist es nicht. Es ist eine einzelne Instanz ... @ EventInstance = Event.Where (Ereigniscode: Sitzung [: Taste]) gab mir einen einzigen Datensatz – diedaaf

+1

@diedaaf es gibt Ihnen eine * Sammlung * *** mit *** einem einzigen Datensatz. Sie möchten es "Event.where (eventcode: session [: key]). first" machen, um single * record * zu erhalten. –

+0

Event.where (evencode: session [: key] gab mir einen einzigen Datensatz weil es nur 1 Event mit diesem Schlüssel gibt – diedaaf