2017-06-04 65 views
0

デモブログを構築するために、Rails(RspecとShoulda Matchersを使用)を使って遊び始めました。テストのvalidates_presence_ofが失敗する理由を理解しようとしています

私は文字通り開始しました。私の最初のテストは失敗しましたが、私はなぜそれが理解できません。

私は私がすべてを正しく設定したと思うが、私はタイトルが私の記事のモデル上に存在することを検証しようとすると、それは...

Shoulda::Matchers::ActiveModel::AllowValueMatcher::AttributeDoesNotExistError: 
    The matcher attempted to set :title on the Article to nil, but that 
    attribute does not exist. 

私のモデルは、このようになります失敗を返します。

class Article < ApplicationRecord 
    # attr_accessor :title 
    validates_presence_of :title 
end 

と私のテスト...

require 'rails_helper' 

RSpec.describe Article do 
    it { should validate_presence_of :title } 
end 

私は、テストをattr_accessorをアウトコメントを解除した場合渡しますが、Railsでは必須ではないことを理解しています。

私は間違っていますか?

答えて

0

articlesデータベーステーブルがtitleの列である限り、attr_accessorは必須ではありません。

db/schema.rbで確認できます。

+0

@ hugh-middletonさん、ありがとうございました。マイグレーションファイルを更新しましたが、スキーマについてはわかりませんでした。属性をどこから読み込んでいたのか分かりませんでした。 – bencarter78

+0

心配はいりません。うん、実際に移行を実行している間は、 'schema.rb'は自動的に更新されます。 –