In der Dokumentation zu Fixtures ( Ссылка ) wird das folgende Beispiel für die Verwendung von Labelreferenzen für Assoziationen angegeben:
%Vor%Dem Beispiel folgend habe ich ein Benutzermodell mit has_one: profile, einem Profilmodell, das zu to_to: user gehört und versucht, Fixtures nach ihrem Beispiel einzurichten:
%Vor%(Hinweis: Da meine Zuordnung in einer Richtung ist, hat das Benutzer-Fixture keine "profile: reginalds_profile" -Zusammensetzung - das Einfügen verursacht einen Fehler, weil die SQL-Tabelle kein profile_id-Attribut hat.)
Das Problem ist, in meinen Unit Tests scheint alles korrekt zu laden, aber Benutzer (: reginald) .profile ist immer Null. Was vermisse ich?
Basierend auf Tadmans Vorschlag habe ich ein wenig mehr gesucht und die Antwort woanders auf dieser Seite gefunden, also könnte ich es genauso gut posten.
Siehe Beitrag mit dem Titel Automatische Assoziationen in Ruby on rails fixtures
Scheinbar findet die Art, wie Rails zugeordnete Fixtures findet, wenn Sie Labels (Benutzer: reginald) anstelle von IDs (user_id: 1) verwenden, durch Hashing des Namens und unter der Annahme, dass der Hash die ID ist. Wenn Sie die ID auf einen bestimmten Wert setzen, schlägt dies fehl. Wenn Sie jedoch zulassen, dass Rails automatisch IDs zuweist, wird dieses Hash-Schema verwendet. So fehlt der Dokumentation für Fixture Association Labels ein Schlüssel-Tidbit - wenn Sie Labels verwenden, müssen Sie vermeiden, dass Sie Ihre eigenen IDs in den Fixtures anwenden, die abgeglichen werden sollen. Fixtures, die nicht mit Labels übereinstimmen, können immer noch das von Ihnen gewählte ID-Schema haben.
Tags und Links unit-testing ruby-on-rails fixtures