很确定这些测试工作正常。通过删除 user.rb 中 has_many :relationships 和 has_many :reverse_relationships 上的依赖: :destroy 选项让它们失败。
想分享我所做的,以防其他人正在阅读Michael Hartl 的 Rails 教程第 2 版第 11 章练习。
这个练习产生了一些问题(见这篇文章的底部)。如果有人可以提供帮助,那就太好了。
第 11 章,练习 1:
按照清单 10.15 中的示例,在关系模型(清单 11.4 和清单 11.16)中添加依赖 :destroy 的测试。
这是我的测试: spec/models/user_spec.rb
require 'spec_helper'
describe User do
before do
@user = User.new(name: "Example User", email: "user@example.com",
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
这个练习提出了几个问题:
问题一:
我最初的测试是relationships.should be_nil reverse_relationships.should be_nil
但是,尽管没有用户存在,但仍意识到数组仍在返回。那么,当用户不存在,调用关联方法时,结果还是数组?这总是正确的吗?
问题2:
我想在 rails 控制台中为用户删除关系和 reverse_relationships。
我试过这个
> user = User.first
> user.relationships
# returns a bunch of relationships
> user.relationships.destroy
=> []
> user.relationships
# returns same bunch of relationships
我如何真正永久地破坏关系?在控制台中探索似乎是一件好事。
谢谢!我对 Rails 还是很陌生