2013-08-30 4 views
0

Вполне возможно, есть в модели, например пользовательской моделирельсы проверки Длина

class User < ActiveRecord::Base 
    attr_accessible :number 
    validates_length_of :number, :is => 4 
... 
end 

проверки на длине 4 (1234) с одним исключением, что число может быть значение 0? :-) Я искал документацию здесь http://api.rubyonrails.org/classes/ActiveModel/Validations/ClassMethods.html, но я не знаю, как это сделать?

редактировать: Теперь я понял, что, возможно, регулярное выражение можно использовать, но тот не мое сильное поле :-P

+0

Что именно вы хотите? Можете ли вы задать свой вопрос? – Mattherick

ответ

0

Если число приходит в виде строки можно проверить формат этого с регулярным выражением, чтобы достичь чего-то близко:

class User < ActiveRecord::Base 
    attr_accessible :number 
    validates :number, :format => { :with => /^(\d{4}|0{1})$/ } 
... 
end 

Это говорит о том, чтобы подтвердить формат числа (в предположении, что это строка) таким образом, что с начала строки есть или шаблон из 4-х цифр или одного 0 цифр с последующим концом строки.

+0

Спасибо, но число целое, возможно, имеет подобное регулярное выражение для целого числа? – Muflix

1

Возможно, вы хотите разрешить длину нуля для подготовки к случаю, когда входной сигнал равен нулю или пустым.

Там встроено простое решение для такого случая

validates :number, length { :is => 4 }, allow_blank: true 
# allow_blank includes cases of both nil and blank 

Done.

Doc: http://guides.rubyonrails.org/active_record_validations.html#allow-blank

+0

Здравствулте !, спасибо, но база данных admin want have 0 по какой-то причине, поэтому мне нужно some allow_zero: true: _) – Muflix

+0

@Muflix, скажите, какой номер имеет длину 0, поэтому вы можете это разрешить. –

+0

нет длины, но конкретный номер, пример: допустимые числа [0,1111,1234,9999 ...], но я нажал на db admin, теперь его разрешает NULL, поэтому я могу использовать ваше решение, спасибо – Muflix

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