我有一个Subscription
模型的表单,用户可以选择输入电话号码。正在使用 Twilio API。
class Subscription < ActiveRecord::Base
validates_numericality_of :phone_number, allow_blank: true
validate :mobile_phone_number
def mobile_phone_number
lookup_client = Twilio::REST::LookupsClient.new Rails.application.secrets.twilio_sid, Rails.application.secrets.twilio_token
begin
response = lookup_client.phone_numbers.get("#{self.phone_number}")
response.phone_number #if invalid, throws an exception. If valid, no problems.
return true
rescue => e
errors.add(:base, "That phone number is not valid.")
end
end
发生的情况:我只能输入给定 Twilio 查找 API 的有效电话号码...这是一件好事。但是,用户需要能够输入空白电话号码。
目前,validates_numericality_of
方法被mobile_phone_number
方法覆盖。
如果我输入空白phone_number,则会返回"该电话号码无效"。这不应该发生。
如何为rescue
制作特殊案例?例如,"除非电话号码为空,否则请拯救此内容"。或者我在这里做错了什么?
感谢所有输入。
这样
你甚至不会输入你的验证函数。查看条件验证
validate :mobile_phone_number, unless: proc { phone_number.blank? }
对于那些不喜欢的人,除非
validate :mobile_phone_number, if: proc { phone_number.present? }
在开头:
if self.phone_number.blank?
return true
end