Пользовательский валидатор Rails 3.1.rc5: allow_nil не работает,: if => lambda {} работает - PullRequest
1 голос
/ 28 августа 2011

Я пишу пользовательский валидатор для AR с именем InvitationValidator. Итак, этот фрагмент кода:

User < ActiveRecord::Base
...
  attr_accessor :invitation
  attr_accessible :invitation
  validates :invitation, :invitation => true, :allow_nil => true
end

не позволяет приглашению с нулевым значением проходить через

А этот параметр допускает нулевое значениечтобы пройти:

User < ActiveRecord::Base
...
  attr_accessor :invitation
  attr_accessible :invitation
  validates :invitation, :invitation => true, if => lambda {|u| u.invitation.present?}
end

Мой валидатор выглядит так:

class InvitationValidator < ActiveModel::Validator
  def validate(record)
    record.errors.add(:invitation, :invalid) unless Invitation.where(:code => record.invitation).count > 0
  end
end

Почему настройка allow_nil не помогает?(Кстати, я использую устройство)

1 Ответ

0 голосов
/ 24 июля 2012

Значение может быть "" (не ноль). : if => lambda работает нормально, потому что "" .present? == неверно.

Попробуйте вместо этого: allow_blank.

...