2017-04-19 4 views
-1

I Modell wie folgenicht initialisierte Konstante Name Fehler

app/model/views/def_usage.rb

class Abc 
    class Def < ActiveRecord::Base 

self.table_name = 'vSomeview' 

    end 
end 

Ich versuche, eine Fabrik Mädchen für diese

spec/Fabriken zu erstellen/views/def_usage.rb

FactoryGirl.define do 
    factory :def_usage, class: Abc::DefUsage do 
...... 
    end 
end 

ich erhalte Fehler uninitialized constant Abc::DefUsage (NameError)

Ich habe versucht, class: Views::Abc::DefUsage oder Views::DefUsage zu ändern, aber kein Glück. Ich bekomme diesen Fehler, wenn ich versuche, rails console zu tun. Warum bekomme ich diesen Fehler?

Antwort

2

Ihr Pfad muss Ihrer Modul-/Klassenhierarchie entsprechen.

Wenn Ihre Klasse in app/models/views/def.rb sein soll, muss Ihre Klasse Views::Def lauten. Wenn Sie möchten, dass Ihre Klasse Abc::Def lautet, muss Ihr Pfad app/models/abc/def.rb lauten. Wenn Sie möchten, dass Ihr Klassenname DefUsage lautet, muss Ihr Dateiname def_usage.rb lauten.

Sie können keine beliebigen Pfade und Klassennamen verwenden. Sie müssen übereinstimmen, wenn Rails automatisch Konstanten für Sie laden soll.

+0

Danke. Also meine Klasse ist in models/views/def_usage.rb und ich nenne es in Factory Girl Views :: DefUsage dann sollte es richtig funktionieren? aber bekommen gleichen Fehler – User7354632781

+1

versuchen Sie einfach 'models/def_usage.rb' und nennen Sie die Klasse' DefUsage' keinen wirklichen Grund, warum Sie es in einem 'Views'-Ordner haben müssen –

+0

so, wenn ich es zu models/abc/def_usage.rb bewegt und Benennung von Abc :: DefUsage in der Fabrik, dann funktioniert es. funktioniert für jetzt. Danke Meagar und Carl – User7354632781

Verwandte Themen