2017-01-13 3 views
0

Ich habe eine Modellklasse namens Person. Die Personenklasse hat ein Attribut namens car.hinzufügen Bedenken Modul zu Modell

Nun möchte ich gerne ein Modul in dem Anliegen Modell Person::Car::HasProducer

Das Modul so aussehen sollte aufgerufen definieren:

module HasProducer 

    def produced_by_toyota? 
    car == "Prius" 
    end 

    def produced_by_bmw? 
    car == "X3" || car == "X5" 
    end 
end 

Ich möchte diese Datei unter finden: Bedenken/Person/Auto/has_producer.rb

im Person -Klasse habe ich versucht, es so zu schließen:

class Person 
    include Person::Car::HasProducer 

Aber es erhalte ich die Fehlermeldung: Unable to autoload constant Person::Car::HasProducer

Ich habe versucht, verschiedene Kombinationen von modules/classes aber keiner der Konstellation für mich gearbeitet.

Was muss ich tun, damit has_producer.rb als Person::Car::HasProducer gefunden wird?

Antwort

1

Entweder Ihr Modul definieren die Namensräume passen Person::Car::HasProducer dh so etwas wie folgt vor:

class Person 
    module Car 
    module HashProducer 
     # your code here 
    end 
    end 
end 

oder nur include HasProducer

+0

Dank für Sie kommentieren, es hat funktioniert, indem die erste 'module' Wechsel zu' CLASS' . Schön, dass Sie auch den 'ActiveSupport :: Konzern 'bemerkt haben. Ich habe es hier in diesem Beispielcode weggelassen. Bitte aktualisieren Sie Ihre Frage und ich werde es als korrekt markieren! –

+0

aktualisiert zuerst 'Modul' zu' Klasse' –