【发布时间】:2015-06-28 20:50:54
【问题描述】:
这是我的模型
class User < ActiveRecord::Base
# Include default devise modules. Others available are:
# :confirmable, :lockable, :timeoutable and :omniauthable
has_many :events
has_many :appointments
validates :name, presence: true
validates :name, format: {with: /\A[[:alnum:]]+\z/, message: 'solo se permiten letras y/o numeros' }, if: 'name.present?'
validates :lastname, format: {with: /\A[[:alnum:]]+\z/, message: 'solo se permiten letras y/o numeros' }, if: 'lastname.present?'
validates :lastname, :presence => true
validates :document, :presence => true
validates_numericality_of :document, :on => :create, :message => "no es un numero", if: 'document.present?'
validates :cellphone, :presence => true
validates :cellphone, numericality:{ only_integer: true, message:"no es un numero"}, if: 'cellphone.present?', :on => :create
validates :cellphone, numericality:{ only_integer: true, message:"no es un numero"}, if: 'cellphone.present?', :on => :update
validates :cellphone, format: { with: /\d{11}/, message: "mal formato, deben ser 11 digitos, incluyendo codigo de area" }, if: "cellphone.present?", :on => :create
validates :cellphone, format: { with: /\d{11}/, message: "mal formato, deben ser 11 digitos, incluyendo codigo de area" }, if: "cellphone.present?", :on => :update
validates :phone, :presence => true
validates :phone, numericality:{ only_integer: true, message:"no es un numero"}, if: "phone.present?", :on => :create
validates :phone, format: { with: /\d{11}/, message: "mal formato, deben ser 11 digitos, incluyendo codigo de area" }, if: "phone.present?", :on => :create
validates_format_of :email,:with => Devise::email_regexp, :allow_blank => true
devise :database_authenticatable, :registerable,
:recoverable, :rememberable, :trackable, :validatable
def medic_with_spec
"#{especialidad}, #{name} #{lastname}"
end
def evento_sin
events.where(available: "1")
end
结束
您可以看到验证:手机具有:on => 创建和:on => 更新,所以我的问题是,当我从电子邮件链接重置密码并使用新密码按更新时,它会显示手机验证错误因为它有 :on => 更新。我怎样才能让它消失?
我试过如果:'cellphone.nil?',它工作正常,因为手机是空白的(重置密码只需要密码和密码确认)但是当我去编辑帐户信息时,它不会验证非零值。
我正在使用设计。
我读了这个链接Validation errors are triggered when I'm trying to reset password,这是完全相同的问题,但我不知道如何实现他们所说的。
我是 ruby on rails 的新手,如果 some1 可以帮助我解决这个问题,我不知道如何实现高级 ruby。
【问题讨论】:
-
(我对 Rails 的抱怨之一。)就我个人而言,我对这样的东西使用单独的表单对象,至少在它很简单的时候是这样。过去我使用过上下文相关的验证,但创建微小的 DTO 更容易,而且它进一步将视图与域对象分开。 YMMV。
-
不知道这个,抱歉
标签: ruby-on-rails ruby validation devise