2012-10-31 4 views
0

현재 테스트 카드가 프로덕션 환경에 제출되지 않았는지 확인하는 스크립트가 있습니다. (Authorize.net이 라이브 모드에서 신용 카드 테스트를 허용하기 때문에) 오류 메시지를 추가합니다. 제출 한 그렇게 같은 Test_Credit_Cards 배열에있는 경우 신용 카드 번호 :레일 3 - 모델 오류 메시지 유효성 검사 메시지

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! 난 그냥을 제거하고 싶습니다.부분의 메시지. 그것을해야

+0

신용 카드 cc_ 번호가 유효하지 않습니까? –

+0

죄송합니다. 그건 내 실수입니다. 내 오류 메시지에서 속성을 제거하고 싶습니다. – dennismonsewicz

답변

1

첫째, 오류 메시지에서 번호를 제거 :

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

내가 안토니 이상이 대답을 선호 :

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

다음, 설정/로케일/en.yml에서 cc_number에 대한 번역을 넣어 알베르토의 대답은 세 가지 이유가 있습니다.

  1. ActiveRecord 기존 번역 엔진을 사용하는 것이 좋습니다.
  2. 이렇게하면 오류를 추가 할 때마다 cc_number가 number로 변환됩니다.
  3. 오류가 CreditCard 인스턴스 자체에있는 것은 사실이 아니며 특히 cc_number 필드와 관련이 있습니다.
0

:

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

base는 전체가 아닌 특정 속성과 객체를 참조합니다.

관련 문제