2012-10-31 137 views
0

目前我有一個腳本來檢查以確保測試卡未在生產中提交(因爲Authorize.net在實時模式下接受測試信用卡)並向錯誤消息添加錯誤消息信用卡號碼,如果提交的一個是Test_Credit_Cards陣列,像這樣的:Rails 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_number號碼無效'嗎? –

+0

對不起,這是我的一個錯字......我只想從我的錯誤信息中刪除屬性 – dennismonsewicz

回答

1

首先,從錯誤消息中刪除數:

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

接下來,把翻譯CC_NUMBER在配置/區域設置/ en.yml:

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

我喜歡這個答案在安東尼Alberto的回答有三個原因:

  1. 使用ActiveRecord現有翻譯引擎總是一個好主意。
  2. 這樣,cc_number將被轉換爲數字,只要您在其上添加錯誤。
  3. 錯誤發生在CreditCard實例本身並不是真的,它與cc_number字段具體相關。
0

應該這樣做:

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

base指對象作爲一個整體,而不是特定的屬性。