/ / Rails Active Record: has_many-Fehler (NameError: nicht initialisierte Konstante) - Ruby-on-Rails, Testen, Aktiverecord

Rails Active Record: has_many Fehler (NameError: nicht initialisierte Konstante) - ruby-on-rails, testing, activerecord

Bearbeitet: gelöst mit

has_many :imagens, :class_name => "Imagem", :dependent => :delete_all

Das Problem, mit dem ich konfrontiert bin, sieht in etwa so aus: Rails: Nicht initialisierter konstanter Fehler bei Active Record

Meine iflections-Datei hat Folgendes:

inflect.plural "imagem", "imagens"
inflect.singular "imagens", "imagem"

Wenn ich versuche, die Bilder zu erhalten, wird dies zu einem Fehler:

veiculo = Veiculo.first
veiculo.imagens #uninitialized constant Veiculo::Imagen

Ich weiß nicht, warum das passiert

class Veiculo < ActiveRecord::Base
has_many :caracteristicas, :dependent => :delete_all
has_many :imagens, :dependent => :delete_all
# more irrelevant code
end

class Imagem < ActiveRecord::Base
belongs_to :veiculo
# more irrelevant code, has attached file
end

Antworten:

1 für die Antwort № 1

Ich hatte gerade dasselbe Problem und habe die Antwort gefunden: Schienen "-Konventionen. Sie müssen beim Erstellen Ihrer Modelle befolgt werden UND bei der Verwendung von has_many: through / gehört_to darin.

class Imagem < ActiveRecord::Base
belongs_to :veiculo
# more irrelevant code, has attached file
end

Es sollte sein:

belongs_to :veiculos

Weil "veiculo" .pluralize "veiculos" gibt (Sie können dies in Ihrer Konsole testen!). Dies sollte Folgendes vermeiden: class_name, was mir persönlich nicht gefällt. :)

Falls Sie es verpasst haben (ich habe es zweimal getan), müssen Sie in Ihrer Beziehungstabelle singuläre Namen verwenden, wie z.