商品モデルのいくつかの基本的な検証を備えた単純な CRUD アプリがあります。それらのテストに合格します。OK、今度は名前にスペースがないこと、または複数の単語がないことをテストする必要があります。以下をコンソールでテストしたところ、うまくいくように見えたので、検証に関するレールガイドを読んで、以下にカスタム検証を書きました。残念ながら、私のテストを実行すると、私が書いたカスタム検証が原因で失敗するため、商品を作成できないため、すべて失敗します。Railscasts #211 から始めて、validates 呼び出しにバリデーターを組み合わせることで、バリデーターを組み込むさまざまな組み合わせを試しました。おそらく簡単なことですが、バリデーターへの呼び出しをヤンクアウトすると、他の基本的なテストに合格します。エラー: 検証に失敗しました: 名前は 1 つの単語でなければなりません (ActiveRecord::RecordInvalid)
require_relative 'commodity_name_validator'
class Commodity < ActiveRecord::Base
attr_accessible :description, :name
has_many :prices
before_save { |commodity| commodity.name.capitalize! }
validates :name, presence: true, length: { minimum: 4 }
validate :commodity_name_validations
end
class CommodityNameValidator < ActiveModel::Validator
def validate(record)
if record.name.split(" ").length <= 1
record.errors[:base] << "Name must be a single word"
end
end
end
thnx、サム