0

現在、テスト カードが実稼働環境で送信されていないことを確認するスクリプトがあり (Authorize.net はライブ モードでテスト クレジット カードを受け入れるため)、送信されたカードがTest_Credit_Cards次のような配列:

TEST_CREDIT_CARDS = ['370000000000002', '6011000000000012', '4007000000027', '4012888818888']
validate :not_a_test_credit_card
 def not_a_test_credit_card
      self.errors[:cc_number] << "number is invalid!" if TEST_CREDIT_CARDS.include?(cc_number) and Rails.env.production?
    end

フロントエンドでは、次のようなエラー メッセージが表示されます。 Credit card cc number is invalid!

とにかくメッセージを変更して読むことはできますか? メッセージからその部分Credit Card number is invalid!を削除したいだけです。cc

4

2 に答える 2

1

まず、エラー メッセージから番号を削除します。

  self.errors[:cc_number] << "is invalid!" if TEST_CREDIT_CARDS.include?(cc_number) and Rails.env.production?

次に、cc_number の翻訳を config/locales/en.yml に入れます。

en:
  activerecord:
    attributes:
      credit_card:
        cc_number: "number"

私は、次の 3 つの理由から、Anthony Alberto の回答よりもこの回答を好みます。

  1. ActiveRecord の既存の翻訳エンジンを使用することは常に良い考えです。
  2. このようにして、エラーを追加するたびに cc_number が数値に変換されます。
  3. エラーが CreditCard インスタンス自体にあるというのは正しくありません。具体的には cc_number フィールドに関連しています。
于 2012-10-31T16:22:03.050 に答える
0

それはそれを行う必要があります:

self.errors[:base] << "number is invalid!" if TEST_CREDIT_CARDS.include?(cc_number) and Rails.env.production?

base特定の属性ではなく、オブジェクト全体を指します。

于 2012-10-31T16:02:37.597 に答える