2010-12-07 4 views
0

Я знаю, что ActiveRecord предоставляет некоторые макросы, такие как , чтобы сделать валидацию для ввода пользователем. но мне интересно, можно ли предоставить некоторый метод обратного вызова, такой как метод валидации, который будет использоваться в качестве метода разрезанной проверки на уровне модели. например, Я хочу проверить входную строку только в виде букв от 'a' до 'h', смешно? но это случалось время от времени.как добавить валидатор клиента в модель rails

ответ

1

Вы можете создавать пользовательские функции с:

validate :custom_function 

def custom_function 
    ... 
end 

Вы также можете использовать регулярные выражения для проверки строки. Для вашего примера я бы использовал:

validates_format_of :attribute, :with => /^[a-h]+$/ 
1

rails guides имеет хороший пример того, как создавать свои собственные валидаторы. Если вы используете Rails 3 вы можете сделать это следующим образом:

class Foo < ActiveRecord::Base 
    validate :from_a_to_h 

    # Use the name of your attribute in place of :input and input. 
    def from_a_to_h 
    errors.add(:input, "must contain only letters from a to h") if input =~ /[i-Z]+/ 
    end 
end 
Смежные вопросы