これらのテストが正しく機能していることを確かめてください。それは、has_many:relationshipsの依存関係::destroyオプションと、user.rbのhas_many:reverse_relationshipsを削除することで失敗に終わりました。依存関係のテストを追加する:Relationshipモデルの破壊(第11章、演習1 Railsチュートリアル、第2版)
は、私は(この記事の一番下を参照)、他のいくつかの質問には、この運動から生まれたMichael Hartl's Rails Tutorial 2nd Edition, Chapter 11 Exercises.
を通じて取り組んでいる場合、誰に何をしたか共有したいと思いました。誰かが助けることができれば、それはすばらしいでしょう。
第11章、演習1:
依存のテストを追加:10.15リストの例を以下により(11.4およびリスト11.16リスト)リレーションシップモデルで破壊します。
ここに私のテストです: 仕様/モデル/ 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:
私を最初のテストは relationships.shouでしたld be_nil reverse_relationships.should be_nil
しかし、ユーザーが存在しないにもかかわらず配列がまだ返されていたことに気付きました。 したがって、ユーザーが存在せず、関連メソッドが呼び出されると、結果は配列のままですか?これはいつも真実ですか?
質問2:私は、レールコンソールでユーザーのための関係とreverse_relationshipsの削除をいじってみたかった
。
私はどのように私は実際に恒久的な関係を破壊するのですか?この
> user = User.first
> user.relationships
# returns a bunch of relationships
> user.relationships.destroy
=> []
> user.relationships
# returns same bunch of relationships
を試してみましたかコンソールで探検するときに知っておくと良いことのようです。
ありがとうございます!私はまだRailsにかなり新しいです。
おかげのようなSMT必要かもしれません! –