Ruby on rails “什么时候?”;“验证”;执行?

Ruby on rails “什么时候?”;“验证”;执行?,ruby-on-rails,ruby,Ruby On Rails,Ruby,我是一个Objective-c程序员,所以我不习惯在方法之外编写代码 关于Rail的验证,我有一个分为两部分的问题 考虑以下代码: class User < ActiveRecord::Base attr_accessible :name, :email email_regex = /\A[\w+\-.]+@[a-z\d\-.]+\.[a-z]+\z/i validates :name, :presence => true,

我是一个Objective-c程序员,所以我不习惯在方法之外编写代码

关于Rail的
验证
,我有一个分为两部分的问题

考虑以下代码:

class User < ActiveRecord::Base
  attr_accessible :name, :email

  email_regex = /\A[\w+\-.]+@[a-z\d\-.]+\.[a-z]+\z/i

  validates :name,  :presence   => true,
                    :length     => { :maximum => 50}

  validates :email, :presence   => true,
                    :format     => { :with => email_regex }.
                    :uniqueness => true

end
class用户true,
:length=>{:max=>50}
验证:email,:presence=>true,
:format=>{:with=>email_regex}。
:唯一性=>true
结束
  • 什么时候执行
    验证
    方法?实例化
    用户
    实例时或加载其类定义时
  • 用户实际何时得到验证?当我保存
    用户
    实例或创建它时
  • 1) 这些方法在用户类本身上被调用,并向其实例对象添加验证

    2) 当你保存它们的时候

    PS:您可以使用gem验证您的电子邮件地址

    您可以这样做:

    validates :email, :presence => true, :email => true
    

    …在您将
    valid\u电子邮件
    放入
    Gemfile

    1之后-在保存/创建模型之前,验证作为回调进行。因此,您可以在没有验证的情况下实例化模型。但是,当您试图保存它时,它必须通过验证

    2-用户何时真正得到验证?当我保存或创建用户实例时


    用户在保存或创建时得到验证。如果需要,您也可以覆盖它。

    您在rails控制台中尝试过吗?当我有这样一个问题时,我通常会以互动的方式回答,看看会发生什么

    ./script/console
    Loading develoment environment (... )
    >> #make a user here and see if you can
    
    如果试图保存用户,但未满足指定的先决条件,则会出现错误

  • 加载user.rb文件时执行validates
  • 当您调用#save或#valid时,用户实际上已被验证

  • 类定义中的所有调用都是在执行类定义时调用的,而不是在创建实例时调用的。值得一提的是,变量email_regex不是实例变量,而是类定义的局部变量。

    您实际上可以单击+1.:Phmm没有,不知道为什么没有注册。