Ziemlich sicher, dass diese Tests ordnungsgemäß funktionieren. Haben Sie einen Fehler, indem Sie die abhängigen Optionen: destroy in has_many: relationshases und has_many: reverse_relationships in user.rb entfernen.Fügen Sie Tests für dependent: destroy im Beziehungsmodell hinzu (Kapitel 11, Übung 1 Rails Tutorial, 2. Ausgabe)
gesucht, was ich sonst durch Michael Hartl's Rails Tutorial 2nd Edition, Chapter 11 Exercises.
Einige Fragen aus dieser Übung entstanden funktioniert hat, falls jemand zu teilen (Ende der Post sehen). Wenn jemand helfen könnte, wäre das großartig.
Kapitel 11, Übung 1:
Tests hinzu abhängig: zerstören im Modell Relationship (Listing 11.4 und Listing 11.16) durch das Beispiel folgende 10,15 in Listing.
Hier ist mein Test: spec/models/user_spec.rb
require 'spec_helper'
describe User do
before do
@user = User.new(name: "Example User", email: "[email protected]",
password: "foobar", password_confirmation: "foobar")
end
subject { @user }
[...code omitted...]
describe "relationship associations" do
let(:other_user) { FactoryGirl.create(:user) }
before do
@user.save
@user.follow!(other_user)
other_user.follow!(@user)
end
it "should destroy associated relationships" do
relationships = @user.relationships
@user.destroy
relationships.should be_empty
end
it "should destroy associated reverse relationships" do
reverse_relationships = @user.reverse_relationships
@user.destroy
reverse_relationships.should be_empty
end
end
Ein paar Fragen aus dieser Übung entstanden:
Frage 1:
Meine erste Tests waren Beziehungen.shou ld be_nil reverse_relationships.should be_nil
Aber realisiert, ein Array wurde immer noch zurückgegeben, obwohl kein Benutzer existiert. Wenn also ein Benutzer nicht existiert und eine Assoziationsmethode aufgerufen wird, ist das Ergebnis immer noch ein Array? Ist das immer wahr?
Frage 2:
ich mit Löschen von Beziehungen und reverse_relationships für einen Benutzer in der Schienen-Konsole spielen, um wollte.
Ich habe versucht, diese
> user = User.first
> user.relationships
# returns a bunch of relationships
> user.relationships.destroy
=> []
> user.relationships
# returns same bunch of relationships
Wie dauerhaft ich zerstören tatsächlich die Beziehungen? Scheint gut zu wissen, wenn man in der Konsole forscht.
Danke! Ich bin immer noch ziemlich neu in Rails
Danke für Ihre Hilfe Eric! –