2012-04-29 2 views
1

Я очень новой для рубина и рельсы, я хотел бы иметь атрибут в базу данных, которая является числомКоличество форматирования в рельсах

-> Число может иметь максимальную длину 10
-> The число разделяется на 3 части, каждая часть разделяется символом «-».
-> Первая часть слева может иметь 2-7 цифр, вторая часть должна иметь ровно 2 цифры , а третья часть должна иметь ровно 1 цифру.

, например 23-56-7
3454-54-3
3435464-54-3 являются действительными числами,
Как мне это сделать?

ответ

2

Ну, это зависит, это не число, если оно содержит '-', поэтому вы, вероятно, захотите сохранить его как строку и проверить его при создании.

Есть два способа сделать это из базы данных или из рельсов. Я предлагаю проверить его на модели рельсов. http://guides.rubyonrails.org/active_record_validations_callbacks.html

Возможно, вам понадобится регулярное выражение для валидации. http://www.rubular.com

И если вы хотите, чтобы выполнить расчеты по номерам вы можете легко сделать что-то вроде этого

yournumber.split('-').map { |x| x.to_i } 

этого будет возвращать массив с 3-х целых чисел.

+0

Спасибо большое !! :) – phntmasasin

2

Прежде всего, необходимо установить строку типа данных, и вы можете сделать проверку с помощью соответствующего регулярного выражения с использованием http://www.rubular.com/ , например: 23-56-7

validates_format_of  :number, :with => /^[1-9][1-9]-[1-9][1-9]-[1-9]$/ 
+0

Ваше регулярное выражение не работает по некоторым правилам. Лучше всего: '\ d {2,7} - \ d {2} - \ d' – shuriu

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