Alle Originalinhalte werden auf Ukrainisch erstellt. Noch nicht alle Inhalte wurden übersetzt. Einige Beiträge sind möglicherweise nur auf Ukrainisch verfügbar.Mehr erfahren

[Fix] Fabrik nicht registriert: "user" (KeyError) (FactoryBot / Rails 7)

Beitrags-Cover: [Fix] Fabrik nicht registriert: "user" (KeyError) (FactoryBot / Rails 7)
Dieser Inhalt wurde automatisch aus dem Ukrainischen übersetzt.
Bei der Einrichtung von Tests in einem neuen Projekt, das mehrere Modelle umfasst - User, Post und so weiter. Alle Fabriken wurden normal registriert, außer User.
Lade Entwicklungsumgebung (Rails 7.0.4.3)
irb(main):001:0> FactoryBot.create(:user)
/Users/memecode/.rbenv/versions/3.2.1/lib/ruby/gems/3.2.0/gems/activesupport-7.0.4.3/lib/active_support/hash_with_indifferent_access.rb:194:in `fetch': Fabrik nicht registriert: "user" (KeyError)                  
/Users/memecode/.rbenv/versions/3.2.1/lib/ruby/gems/3.2.0/gems/activesupport-7.0.4.3/lib/active_support/hash_with_indifferent_access.rb:194:in `fetch': Schlüssel nicht gefunden: "user" (KeyError)
Der Aufruf von FactoryBot.factories bestätigte ebenfalls, dass alle Fabriken außer User registriert sind. Nach der Suche nach der Ursache stellte sich heraus, dass einfach die Bibliothek FactoryBot installiert war, wir jedoch FactoryBot für Rails benötigen.

Beheben wir den Fehler bei der Registrierung der Fabrik (Fabrik nicht registriert: "user")

Also ändern wir:
  gem 'factory_bot', '~> 6.5'
in
  gem 'factory_bot_rails', '~> 6.4', '>= 6.4.4'
Natürlich führen wir aus
bundle
Und alles wird funktionieren. factory_bot_rails hat factory_bot als Abhängigkeit, also benötigen wir nur die Bibliothek in unserem Gemfile.

Was ist der Unterschied zwischen factory_bot und factory_bot_rails?

factory_bot ist die Hauptbibliothek für die Arbeit mit Fabriken, eine Art "einfaches Ruby-Werkzeug". Wenn Sie eine einfache und zuverlässige Möglichkeit benötigen, Testdaten in Ruby zu erstellen, ist factory_bot die Lösung für diese Aufgabe.
Es ermöglicht Ihnen, Fabriken zu definieren, die Modelle mit bequemen Einstellungen erstellen. Möchten Sie einen Benutzer generieren? Anstatt alle Parameter manuell einzugeben, füllt factory_bot sie automatisch für Sie aus. Aber es gibt eine Bedingung: Sie müssen selbst dafür sorgen, wie diese Fabriken in Ihrem Projekt geladen werden, insbesondere wenn es sich um etwas Komplexeres als eine Standard-Rails-Anwendung handelt.
Und was ist factory_bot_rails? Es ist eher ein "Hilfswerkzeug", das entwickelt wurde, um die Arbeit mit factory_bot in Rails so nahtlos wie möglich zu gestalten.
Stellen Sie sich vor, Sie haben eine große Rails-Anwendung mit mehreren Dutzend Modellen und Tests. Anstatt jedes Mal manuell die Verbindung zu den Fabriken einzurichten, erledigt factory_bot_rails dies automatisch. Es integriert sich in die Testumgebung von Rails und stellt sicher, dass alle Fabriken bereit zur Verwendung sind. Darüber hinaus fügt es einige nützliche Befehle in Rails hinzu, beispielsweise zum schnellen Erstellen von Fabriken für neue Modelle.
Zusammenfassend kann man sagen, dass factory_bot die Grundlage ist, während factory_bot_rails die Hülle ist, die diese Grundlage für Rails-Entwickler bequem macht. Sie arbeiten zusammen: die erste bietet Funktionalität, die zweite Komfort. Wenn Sie eine Rails-Anwendung haben, reicht es aus, nur factory_bot_rails zu verwenden, da es bereits alles Notwendige enthält. Aber wenn Sie Fabriken außerhalb von Rails verwenden oder sie an Ihre Bedürfnisse anpassen möchten, benötigen Sie factory_bot.
Es ist auch erwähnenswert, dass die Bibliothek Faker sehr häufig zur Generierung von Inhalten in Fabriken verwendet wird. Sie spart Zeit und ermöglicht es, Objekte zu erstellen, die realistischeren ähneln.

Dieser Beitrag hat noch keine Ergänzungen vom Autor.

Wie funktioniert das Modell der künstlichen Intelligenz?
15. Sep, 16:42 Uhr

Wie funktioniert das Modell der künstlichen Intelligenz?

meme code
meme code@memecode
Was bedeutet relational (im Kontext von relationalen Datenbanken)?
21. Sep, 08:27 Uhr

Was bedeutet relational (im Kontext von relationalen Datenbanken)?

meme code
meme code@memecode
Was ist ein RDBMS (relationales Datenbankmanagementsystem)?
21. Sep, 08:56 Uhr

Was ist ein RDBMS (relationales Datenbankmanagementsystem)?

meme code
meme code@memecode
Was bedeutet das ACID-Prinzip in der Programmierung?
24. Sep, 20:31 Uhr

Was bedeutet das ACID-Prinzip in der Programmierung?

meme code
meme code@memecode
Was ist Convention over Configuration (im Kontext von RoR und nicht nur)?
26. Sep, 07:47 Uhr

Was ist Convention over Configuration (im Kontext von RoR und nicht nur)?

meme code
meme code@memecode
Rundung von Dezimalzahlen: mathematische Regeln, JavaScript und Ruby
18. Okt, 12:59 Uhr

Rundung von Dezimalzahlen: mathematische Regeln, JavaScript und Ruby

meme code
meme code@memecode
Was ist PORO in Ruby?
08. Dez, 12:46 Uhr

Was ist PORO in Ruby?

meme code
meme code@memecode
Was ist der Unterschied zwischen spec_helper.rb und rails_helper.rb in RSpec?
08. Dez, 13:53 Uhr

Was ist der Unterschied zwischen spec_helper.rb und rails_helper.rb in RSpec?

meme code
meme code@memecode
09. Dez, 14:50 Uhr

[Fix] Keine solche Datei oder Verzeichnis @ rb_sysopen - tmp/pids/server.pid

meme code
meme code@memecode
Was man wissen muss, um eine erfolgreiche Karriere als Freelancer im IT-Bereich aufzubauen
23. Dez, 16:03 Uhr

Was man wissen muss, um eine erfolgreiche Karriere als Freelancer im IT-Bereich aufzubauen

meme code
meme code@memecode
Virtueller Cloud-Server: Was ist das und was sind seine Besonderheiten
03. Jan, 10:58 Uhr

Virtueller Cloud-Server: Was ist das und was sind seine Besonderheiten

meme code
meme code@memecode
[Fix] Heroku / SearchBox-Addon - Indexierungsfehler "Der Client kann den Server nicht als Elasticsearch verifizieren"
31. Jan, 13:09 Uhr

[Fix] Heroku / SearchBox-Addon - Indexierungsfehler "Der Client kann den Server nicht als Elasticsearch verifizieren"

meme code
meme code@memecode