検証に問題があります。次の構文を使用すると、すべてがうまくいっています(失敗なし)。Rails検証とカスタムエラーメッセージ
validates :title, uniqueness: true
ただし、これに変更するとエラーになります。ここで
validates :title, uniqueness: {message: 'Title must be unique'}
は、完全性についてテストです:
test "product is not valid without a unique title " do
product = Product.new(title: products(:ruby).title,
description: "yyy",
price: 1,
image_url: "fred.gif")
assert !product.save
assert_equal "has already been taken", product.errors['title'].join('; ')
end
私はなどRubyの製品のための本のタイトルを追加して、固定具
を持って、私はそれを理解するように、2つの検証をする必要があります同じ、ちょうど1つはカスタムエラーメッセージを与えます。これは、カスタムメッセージを使用するときに発生するエラーです。
1失敗): test_product_is_not_valid_without_a_unique_title_(ProductTest) <> "すでにとられている" と予想しかし <た "タイトルは一意でなければなりません">。
ご協力いただきありがとうございます。ここで
カスタムメッセージが表示されることは期待できません。重複するタイトルを挿入しない限り、メッセージはまったく期待できません。フィールド名を入力しないでいただきありがとうございます;) – Lee
テストDBが既にフィクスチャでいっぱいですか?既存のタイトルのレコードを作成しようとしているようです。 – jdoe
はい、私はカスタムメッセージを使用しているかどうかにかかわらず、エラーを取得してはいけません。 validates:title、uniqueness:テストを実行しても、本当に失敗する必要があります。フィクスチャがテストデータをDBにロードすると、どちらのvalidates節も失敗をトリガするはずです。私が何かを逃していない限り? – Lee