Запуск одной проверки в Rails - PullRequest
4 голосов
/ 05 октября 2009

Я отправляю приглашения друзьям и хочу подтвердить адрес электронной почты, используя User.validates_format_of :email, за исключением того, что у User.email есть несколько других проверок, которые меня не особо интересуют.

Так есть ли способ запустить одну проверку на модели или проверить, прошла ли эта конкретная проверка (без выполнения user.errors.include?(validation_message) )

Ответы [ 3 ]

10 голосов
/ 03 февраля 2013

Вы можете проверить драгоценный камень grouped_validations

class Person < ActiveRecord::Base
  validation_group :name do
    validates_presence_of :first_name
    validates_presence_of :last_name
  end
  validates_presence_of :sex
end

Тогда вы можете сделать это в вашем контроллере

p = Person.new
p.group_valid?(:name) # => false
p.first_name = 'John'
p.last_name = 'Smith'
p.group_valid?(:name) # => true
3 голосов
/ 05 декабря 2013

Создайте такой метод в своей модели и используйте его для частичной проверки

def has_valid_name?
  valid? || (errors[:first_name].empty? && errors[:last_name].empty?)
end
2 голосов
/ 12 сентября 2013

Вы можете проверить, была ли добавлена ​​конкретная ошибка:

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