Rails 4:Active Record Validation错误:create

时间:2014-09-24 16:07:15

标签: validation activerecord ruby-on-rails-4

如果我在创建动作之前有一些:

before_create :generate_token
private
def generate_token
  self.auth_token = loop do
    random_token = SecureRandom.urlsafe_base64(nil, false)
    break random_token unless self.class.exists?(auth_token: random_token)
  end
end

在编写验证时,我发现validates :auth_token, presence: true, on: :create失败。 但是,validates :auth_token, presence: true, on: :after_create有效。

为什么会这样?

REF。 Active Record Callback OrderActive Record Validations :on

编辑:奇怪的是,on: :before_create通过验证,on: :create失败,on: after_create成功。这很令人费解,有人可以解释一下吗?

1 个答案:

答案 0 :(得分:0)

阅读您链接的文档:

(1) before_validation

(-) validate  <======== This runs before before_create callbacks are run

(2) after_validation

(3) before_save

(4) before_create

我会考虑在初始化对象时生成令牌。

after_initialized :generate_token