嗨,这是我的用户模型
class User < ActiveRecord::Base
has_many :events
validates :cellphone, numericality:{ only_integer: true, message:"no es un numero"}, format: { with: /\d{11}/, message: "mal formato, deben ser 11 digitos, incluyendo codigo de area" }, :allow_blank => true
validates :phone, numericality:{ only_integer: true, message:"no es un numero"}, format: { with: /\d{11}/, message: "mal formato, deben ser 11 digitos, incluyendo codigo de area" }, :allow_blank => true
validates_numericality_of :cellphone, :on => :create, :message => "no es un numero", :allow_blank => true
validates_numericality_of :document, :on => :create, :message => "no es un numero", :allow_blank => true
validates :name, :presence => true
validates :lastname, :presence => true
validates :document, :presence => true, :uniqueness => true
validates :cellphone, :presence => true, :uniqueness => true
validates :phone, :presence => true, :uniqueness => true
validates_format_of :email,:with => Devise::email_regexp, :allow_blank => true
devise :database_authenticatable, :registerable,
:recoverable, :rememberable, :trackable, :validatable
end
我想证明,例如:手机,数字只有在它通过时:手机,:在线状态=&gt;真实的验证。
我已经阅读了StackOverflow中的所有帖子,但我似乎无法理解他们在做什么。
如果some1可以帮助我逐步完成这一步。
由于
答案 0 :(得分:0)
:allow_blank => true
:presence => true
作为评论中提到的@apneadiving,这两者相距180度。如果一个是真的,那么另一个应该是假的。你不能同时拥有两者。
您要问的是,当且仅当记录存在时,您要检查numericality
。为此,您可以执行以下操作:
validates :cellphone, numericality:{ ... }, format: { ... }, :allow_blank => true
通过这种方式,由于cellphone
字段可以为空,因此numericality
只会检查它是否存在。
另一个选项是:您可以传递一个块以检查该字段是否存在,并且确实存在,检查numericality
。
以下是:
validate :cellphone, numbericality: { ... }, :if => lambda{ |object| object.cellphone.present? }