В Rails, как реализованы валидаторы, например «validates_numericity_of»? - PullRequest
2 голосов
/ 19 ноября 2010

Я новичок в языке Ruby и фреймворке Rails.Когда я увидел этот кусок кода из книги «Head First Rails»:

класс ClientWorkout

validates_numericity_of: paid_amount

end

Мои вопросы:

1) Где и как реализован validates_numericity_of из языка Ruby?Доступно ли это для классов Ruby вне среды ActiveRecord

2) Что делает validates_numericity_of с экземплярами класса ClientWorkout?

Спасибо.

Ответы [ 2 ]

1 голос
/ 19 ноября 2010

1) validates_numericity_of - это одна из многих валидаций, существующих в платформе Rails, или, точнее, ActiveRecord. Так что это не то, что доступно для всех классов Ruby. Вы используете это, передавая рубиновые символы, которые представляют атрибуты для модели. Вы можете передать несколько атрибутов одновременно:

validates_numericality_of :age, :score

Но вы также можете указать валидацию несколько раз, если вам нужны разные настройки для разных атрибутов:

validates_numericality_of :age
validates_numericality_of :score, :allow_nil => true

2) Что обычно делает проверка, так это проверка правильности модели перед сохранением в базу данных при вызове ClientWorkout.save (). validates_numericity_of делает так, как следует из названия, подтверждает, что переданные атрибуты являются числовыми, а не строкой, массивом, логическим значением и т. д.

Если какая-либо из проверок не будет выполнена, то запись не будет сохранена в базе данных. Конечно, это можно обойти, вызвав ClientWorkout.save (false), который скажет ActiveRecord сохранить без проверки записи.

0 голосов
/ 19 ноября 2010

validates_numericity_of проверяет, является ли значение указанного атрибута числовым.

Active Record - ваша модель, и каждая модель соответствует таблице в базе данных.Поэтому, если вы используете validates_numericity_of в классе ClientWorkout, это будет проверять только paid_amount в этом классе / модели.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...