私はすべてのテストに合格して、MichaelHartlのRubyonRailsチュートリアルをすべて実行しました。今、私は戻って自分のニーズに合うようにサイトに変更を加えていますが、「このセクションのテストは合格していません」ほどカットアンドドライではありません。Hartlの「Micropost」オブジェクトに強く基づいた新しい「Charity」オブジェクトを作成しました。唯一の違いは、「コンテンツ」を持つ代わりに、オブジェクトに、、:name
および:description
が含まれること:summary
です。
これは、失敗しているテスト(具体的には「it {should be_valid}」)のコードであり、次の場所にあり/charity_spec.rb
ます。
require 'spec_helper'
describe Charity do
let(:user) { FactoryGirl.create(:user) }
before { @charity = user.charities.build(summary: "Lorem ipsum") }
subject { @charity }
it { should respond_to(:name) }
it { should respond_to(:user_id) }
it { should respond_to(:summary) }
it { should respond_to(:description) }
it { should respond_to(:user) }
its(:user) { should == user }
it { should be_valid }
...
テストは実際には最初は合格ですが、検証をcharity.rb
ファイルに追加すると、検証が返されます。
Failures:
1) Charity
Failure/Error: it { should be_valid }
expected valid? to return, true, got false
...
これがcharity.rb
:
class Charity < ActiveRecord::Base
attr_accessible :name, :description, :summary
belongs_to :user
validates :name, presence: true, length: { maximum: 40 }
validates :summary, presence: true
validates :description, presence: true
validates :user_id, presence: true
default_scope order: 'charities.created_at DESC'
end
ばかげているとは思いますが、理解が弱いので何が悪いのかわからず、工場の調子が悪い気がしますが、よくわかりません。
これが私のチャリティーファクトリーですfactories.rb
:
factory :charity do
name "Lorem ipsum"
summary "Lorem ipsum"
description "Lorem ipsum"
user
end
、、、および検証をから削除する:name
と、テストに合格します。良い尺度として、これが私の始まりです::summary
:description
charity.rb
user.rb
class User < ActiveRecord::Base
attr_accessible :name, :email, :password, :password_confirmation
has_secure_password
has_many :charities
has_many :microposts, dependent: :destroy