是否有一种通用的方式来覆盖来自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