Почти уверен, что эти тесты работают правильно. Принудил их к сбою, удалив параметры depend::destroy в has_many:relationships и has_many:reverse_relationships в user.rb.
Хотел поделиться тем, что я сделал, на случай, если кто-то еще работает с Майкла Хартла. Учебное пособие по Rails, 2-е издание, глава 11, упражнения.
В связи с этим упражнением возникло несколько вопросов (см. внизу этого поста). Если бы кто-нибудь мог помочь, это было бы здорово.
Глава 11, упражнение 1:
Добавьте тесты для зависимого :destroy в модели отношений (листинги 11.4 и листинги 11.16), следуя примеру из листинга 10.15.
Вот мой тест: 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
По этому упражнению возникло несколько вопросов:
Вопрос 1:
Моими первоначальными тестами были отношения.
Но понял, что массив все еще возвращается, несмотря на отсутствие пользователя. Итак, когда пользователь не существует и вызывается метод ассоциации, результат все равно остается массивом? Всегда ли это так?
Вопрос 2:
Я хотел поиграть с удалением отношений и reverse_relationships для пользователя в консоли rails.
я пробовал это
> user = User.first
> user.relationships
# returns a bunch of relationships
> user.relationships.destroy
=> []
> user.relationships
# returns same bunch of relationships
Как мне на самом деле разрушить отношения навсегда? Кажется, это полезно знать при изучении в консоли.
Спасибо! Я все еще новичок в Rails