2015-11-19 5 views
0

У меня есть модель с некоторыми правилами проверок:Ruby On Rails 4. Модель условная валидация

class Order < ActiveRecord::Base 

    validates :zip_code, presence: true, length: {is: 5}, numericality: {only_integer: true, :greater_than => 0} 
end 

И когда zip_code пустой я не нужен выполнять другие zip_code валидаций (это избыточно и все остальные сообщения проверки на странице пользователя очень странно, если zip_code пуст)

Как я могу реализовать эту логику? Мне нужно, чтобы проверить length, is_integer and greater_than only if zip_code is not blank? и мне нужно, чтобы показать только zip_code can't be blank сообщения на странице пользователя

ответ

2

Вы можете сделать что-то вроде

validates :zip_code, presence: true 
validates :zip_code, length: {is: 5}, numericality: {only_integer: true, :greater_than => 0}, :if => :zip_code? 

Надеется, что это помогает!

+0

Спасибо! это помогает –

+0

Выполнено, мне пришлось подождать 3 мин, чтобы отметить это как ответ. Большое спасибо –

Смежные вопросы