我想为我的一个模型创建一些包含位置信息(街道,地点,邮政编码等)的验证。我希望能够根据选择的国家/地区更改验证规则。
例如,postal_code的验证规则对于美国和美国而言是不同的。加拿大。此外,一些国家没有邮政编码,因此不需要验证规则。
我将如何实施这样的事情?
答案 0 :(得分:6)
将其放入模型中以运行任何自定义逻辑进行验证。
validate :location_should_be_valid
def location_should_be_valid
# run all your custom logic here
# if it isn't valid, add an error indicating why
if country == "Canada"
errors.add(:postal_code, "Invalid postal code for Canada") if postal_code.length != 7
end
end
在Rails指南中了解更多相关信息:
http://guides.rubyonrails.org/active_record_validations_callbacks.html#creating-custom-validation-methods
答案 1 :(得分:1)
validates :postal_code, :presence => true, :if => :check_country
def check_country
["US", "Canada"].include?(self.country)
end