是否有一種通用的方式來覆蓋來自rails中gem/plugin的錯誤(驗證)消息?重寫Rails錯誤(驗證)來自Gems /插件的消息
例如,我使用的是ActiveMerchant Gem,如果某人輸入美國運通信用卡號碼,但選擇「MasterCard」,我會得到一個不太具有描述性的「類型不是正確的卡片類型「錯誤。
我可以很容易地解決這個獲得通過做這樣的事情:
def validate_card
unless credit_card.valid?
credit_card.errors.full_messages.each do |message|
if message =~ /is not the correct card type/i
errors.add_to_base "This credit card number is invalid.
Please ensure that you selected the correct type."
else
errors.add_to_base message
end
end
end
end
但是這種技術很快變得難以維護和顯然是(至少在我看來)遠的「最佳實踐」。同樣,我可以解壓ActiveMerchant Gem並將其加載到我自己的自定義錯誤消息中,但這似乎也不可維護,因爲它需要將相同的黑客添加到未打包的ActiveMerchant版本中。
謝謝,我曾想過做這樣的事情,但不確定'validate_card_number'是否是私人的事實會導致任何問題。 – jerhinesmith 2010-01-11 18:36:27